@browserlessapi/inferlo 0.6.0 → 0.7.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 +7 -4
- package/dist/ai/ai-sdk.d.ts +48 -0
- package/dist/ai/ai-sdk.js +235 -0
- package/dist/ai/ai-sdk.js.map +1 -0
- package/dist/ai/index.d.ts +37 -3
- package/dist/ai/index.js +96 -7
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/public.d.ts +5 -1
- package/dist/ai/public.js +2 -0
- package/dist/ai/public.js.map +1 -1
- package/dist/ai/ui.d.ts +47 -0
- package/dist/ai/ui.js +33 -0
- package/dist/ai/ui.js.map +1 -0
- package/dist/app.d.ts +31 -4
- package/dist/app.js +106 -29
- package/dist/app.js.map +1 -1
- package/dist/astro.d.ts +60 -0
- package/dist/astro.js +68 -0
- package/dist/astro.js.map +1 -0
- package/dist/audit.d.ts +8 -1
- package/dist/audit.js +9 -2
- package/dist/audit.js.map +1 -1
- package/dist/auth.d.ts +1 -0
- package/dist/auth.js +1 -0
- package/dist/auth.js.map +1 -1
- package/dist/azure.d.ts +66 -0
- package/dist/azure.js +119 -0
- package/dist/azure.js.map +1 -0
- package/dist/cache.d.ts +13 -9
- package/dist/cache.js +11 -9
- package/dist/cache.js.map +1 -1
- package/dist/cli/main.js +4 -4
- package/dist/cli/main.js.map +1 -1
- package/dist/client-ip.d.ts +36 -1
- package/dist/client-ip.js +80 -1
- package/dist/client-ip.js.map +1 -1
- package/dist/db/memory.js +2 -1
- package/dist/db/memory.js.map +1 -1
- package/dist/db/postgres.js +4 -1
- package/dist/db/postgres.js.map +1 -1
- package/dist/db/table.d.ts +37 -5
- package/dist/db/table.js +96 -15
- package/dist/db/table.js.map +1 -1
- package/dist/db/types.d.ts +2 -0
- package/dist/describe.d.ts +15 -4
- package/dist/describe.js +10 -2
- package/dist/describe.js.map +1 -1
- package/dist/events.d.ts +134 -0
- package/dist/events.js +196 -0
- package/dist/events.js.map +1 -0
- package/dist/index.d.ts +12 -5
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/jobs.d.ts +50 -10
- package/dist/jobs.js +66 -13
- package/dist/jobs.js.map +1 -1
- package/dist/langchain.d.ts +58 -0
- package/dist/langchain.js +220 -0
- package/dist/langchain.js.map +1 -0
- package/dist/model.d.ts +23 -6
- package/dist/model.js +35 -6
- package/dist/model.js.map +1 -1
- package/dist/rate-limit.d.ts +5 -3
- package/dist/rate-limit.js +3 -3
- package/dist/rate-limit.js.map +1 -1
- package/dist/redis-events.d.ts +27 -0
- package/dist/redis-events.js +163 -0
- package/dist/redis-events.js.map +1 -0
- package/dist/redis-jobs.d.ts +24 -0
- package/dist/redis-jobs.js +203 -0
- package/dist/redis-jobs.js.map +1 -0
- package/dist/redis.d.ts +30 -0
- package/dist/redis.js +106 -0
- package/dist/redis.js.map +1 -0
- package/dist/response-body.d.ts +6 -0
- package/dist/response-body.js +7 -0
- package/dist/response-body.js.map +1 -0
- package/dist/route.d.ts +14 -1
- package/dist/route.js.map +1 -1
- package/dist/schema.d.ts +2 -2
- package/dist/serve.d.ts +6 -1
- package/dist/serve.js +64 -7
- package/dist/serve.js.map +1 -1
- package/dist/service-client.d.ts +91 -0
- package/dist/service-client.js +177 -0
- package/dist/service-client.js.map +1 -0
- package/dist/sessions.d.ts +2 -0
- package/dist/sessions.js +1 -0
- package/dist/sessions.js.map +1 -1
- package/dist/tracing.d.ts +7 -3
- package/dist/tracing.js +8 -2
- package/dist/tracing.js.map +1 -1
- package/llms.txt +1 -0
- package/package.json +36 -4
- package/templates/app/AGENTS.md +5 -3
package/dist/ai/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"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"}
|
package/dist/ai/public.d.ts
CHANGED
|
@@ -10,10 +10,14 @@
|
|
|
10
10
|
*/
|
|
11
11
|
export { createAI, cosineSimilarity, extractJson } from "./index.ts";
|
|
12
12
|
export { tool, isTool, ToolBuilder } from "./tool.ts";
|
|
13
|
+
export { aiSdk } from "./ai-sdk.ts";
|
|
14
|
+
export type { AISdkProvider, AISdkLanguageModel, AISdkEmbeddingModel, AISdkOptions } from "./ai-sdk.ts";
|
|
15
|
+
export { uiChatBody, fromUIMessages } from "./ui.ts";
|
|
16
|
+
export type { UIChatMessage } from "./ui.ts";
|
|
13
17
|
export type { ToolDef, FunctionToolOptions, ToolContext } from "./tool.ts";
|
|
14
18
|
export { openai, openaiCompatible, anthropic, gemini, ollama, mockProvider, ProviderError } from "./providers.ts";
|
|
15
19
|
export type { TracingConfig, OtelApi, OtelSpan } from "../tracing.ts";
|
|
16
|
-
export type { AI, AIConfig, GenerateOptions, GenerateResult, StreamResult, Usage, Pricing, Step, ToolCallResult } from "./index.ts";
|
|
20
|
+
export type { AI, AIConfig, GenerateOptions, GenerateResult, StreamResult, StreamResponseInit, Usage, Pricing, Step, ToolCallResult } from "./index.ts";
|
|
17
21
|
export type { Provider, ProviderRequest, ProviderResponse, ProviderUsage, Image, ImageMediaType, Message, MockReply, ToolCall, ToolSpec, OpenAICompatibleOptions } from "./providers.ts";
|
|
18
22
|
export { t, Schema, ObjectSchema, ArraySchema, ValidationError, toJSONSchema } from "../schema.ts";
|
|
19
23
|
export type { Infer, InferInput, Issue, JSONSchema, AnySchema } from "../schema.ts";
|
package/dist/ai/public.js
CHANGED
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
*/
|
|
11
11
|
export { createAI, cosineSimilarity, extractJson } from "./index.js";
|
|
12
12
|
export { tool, isTool, ToolBuilder } from "./tool.js";
|
|
13
|
+
export { aiSdk } from "./ai-sdk.js";
|
|
14
|
+
export { uiChatBody, fromUIMessages } from "./ui.js";
|
|
13
15
|
export { openai, openaiCompatible, anthropic, gemini, ollama, mockProvider, ProviderError } from "./providers.js";
|
|
14
16
|
export { t, Schema, ObjectSchema, ArraySchema, ValidationError, toJSONSchema } from "../schema.js";
|
|
15
17
|
export { InferloError, httpError } from "../errors.js";
|
package/dist/ai/public.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public.js","sourceRoot":"","sources":["../../src/ai/public.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"public.js","sourceRoot":"","sources":["../../src/ai/public.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAGrD,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAIlH,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEnG,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/ai/ui.d.ts
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chat UIs built with the Vercel AI SDK (useChat from @ai-sdk/react, @ai-sdk/vue, @ai-sdk/svelte):
|
|
3
|
+
*
|
|
4
|
+
* route.post("/chat", { body: uiChatBody }).handle(({ body, ai, user }) =>
|
|
5
|
+
* ai.stream({ model: "fast", messages: fromUIMessages(body.messages), for: user.id }).toResponse({ format: "ai-sdk" }))
|
|
6
|
+
*
|
|
7
|
+
* uiChatBody validates the body useChat sends, fromUIMessages turns its messages into model messages, and
|
|
8
|
+
* toResponse({ format: "ai-sdk" }) answers with the AI SDK UI message stream protocol. Nothing from the ai package is
|
|
9
|
+
* loaded: these are plain schemas and functions.
|
|
10
|
+
*/
|
|
11
|
+
import { type Infer } from "../schema.ts";
|
|
12
|
+
import type { Message } from "./providers.ts";
|
|
13
|
+
declare const uiMessage: import("../schema.ts").ObjectSchema<{
|
|
14
|
+
role: import("../schema.ts").Schema<"system" | "user" | "assistant", "system" | "user" | "assistant">;
|
|
15
|
+
parts: import("../schema.ts").ArraySchema<import("../schema.ts").ObjectSchema<{
|
|
16
|
+
type: import("../schema.ts").Schema<string, string>;
|
|
17
|
+
text: import("../schema.ts").Schema<string | undefined, string | undefined>;
|
|
18
|
+
}>>;
|
|
19
|
+
}>;
|
|
20
|
+
/**
|
|
21
|
+
* The request body useChat sends ({ id, messages, trigger, messageId, ... }). Only the messages are kept; each
|
|
22
|
+
* keeps its role and its parts' type and text (other fields, such as ids, metadata and part state, are dropped).
|
|
23
|
+
* Limits: 1 to 500 messages, 100 parts per message, 100,000 characters per text part.
|
|
24
|
+
*/
|
|
25
|
+
export declare const uiChatBody: import("../schema.ts").ObjectSchema<{
|
|
26
|
+
messages: import("../schema.ts").ArraySchema<import("../schema.ts").ObjectSchema<{
|
|
27
|
+
role: import("../schema.ts").Schema<"system" | "user" | "assistant", "system" | "user" | "assistant">;
|
|
28
|
+
parts: import("../schema.ts").ArraySchema<import("../schema.ts").ObjectSchema<{
|
|
29
|
+
type: import("../schema.ts").Schema<string, string>;
|
|
30
|
+
text: import("../schema.ts").Schema<string | undefined, string | undefined>;
|
|
31
|
+
}>>;
|
|
32
|
+
}>>;
|
|
33
|
+
}>;
|
|
34
|
+
/** A UI message as uiChatBody keeps it. */
|
|
35
|
+
export type UIChatMessage = Infer<typeof uiMessage>;
|
|
36
|
+
/**
|
|
37
|
+
* Model messages from AI SDK UI messages: the text parts of each message joined in order. Other parts (files,
|
|
38
|
+
* reasoning, tool calls, data parts, step markers) are left out, and messages without text are dropped.
|
|
39
|
+
*/
|
|
40
|
+
export declare function fromUIMessages(messages: readonly {
|
|
41
|
+
role: "system" | "user" | "assistant";
|
|
42
|
+
parts: readonly {
|
|
43
|
+
type: string;
|
|
44
|
+
text?: string;
|
|
45
|
+
}[];
|
|
46
|
+
}[]): Message[];
|
|
47
|
+
export {};
|
package/dist/ai/ui.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chat UIs built with the Vercel AI SDK (useChat from @ai-sdk/react, @ai-sdk/vue, @ai-sdk/svelte):
|
|
3
|
+
*
|
|
4
|
+
* route.post("/chat", { body: uiChatBody }).handle(({ body, ai, user }) =>
|
|
5
|
+
* ai.stream({ model: "fast", messages: fromUIMessages(body.messages), for: user.id }).toResponse({ format: "ai-sdk" }))
|
|
6
|
+
*
|
|
7
|
+
* uiChatBody validates the body useChat sends, fromUIMessages turns its messages into model messages, and
|
|
8
|
+
* toResponse({ format: "ai-sdk" }) answers with the AI SDK UI message stream protocol. Nothing from the ai package is
|
|
9
|
+
* loaded: these are plain schemas and functions.
|
|
10
|
+
*/
|
|
11
|
+
import { t } from "../schema.js";
|
|
12
|
+
const uiPart = t.object({ type: t.string().min(1).max(100), text: t.string().max(100_000).optional() }).strip();
|
|
13
|
+
const uiMessage = t.object({ role: t.enum(["system", "user", "assistant"]), parts: t.array(uiPart).max(100) }).strip();
|
|
14
|
+
/**
|
|
15
|
+
* The request body useChat sends ({ id, messages, trigger, messageId, ... }). Only the messages are kept; each
|
|
16
|
+
* keeps its role and its parts' type and text (other fields, such as ids, metadata and part state, are dropped).
|
|
17
|
+
* Limits: 1 to 500 messages, 100 parts per message, 100,000 characters per text part.
|
|
18
|
+
*/
|
|
19
|
+
export const uiChatBody = t.object({ messages: t.array(uiMessage).min(1).max(500) }).strip();
|
|
20
|
+
/**
|
|
21
|
+
* Model messages from AI SDK UI messages: the text parts of each message joined in order. Other parts (files,
|
|
22
|
+
* reasoning, tool calls, data parts, step markers) are left out, and messages without text are dropped.
|
|
23
|
+
*/
|
|
24
|
+
export function fromUIMessages(messages) {
|
|
25
|
+
const out = [];
|
|
26
|
+
for (const m of messages) {
|
|
27
|
+
const content = m.parts.map((p) => (p.type === "text" && typeof p.text === "string" ? p.text : "")).join("");
|
|
28
|
+
if (content)
|
|
29
|
+
out.push({ role: m.role, content });
|
|
30
|
+
}
|
|
31
|
+
return out;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=ui.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/ai/ui.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,CAAC,EAAc,MAAM,cAAc,CAAC;AAG7C,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;AAEhH,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;AAEvH;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;AAK7F;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,QAAiH;IAC9I,MAAM,GAAG,GAAc,EAAE,CAAC;IAC1B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7G,IAAI,OAAO;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
package/dist/app.d.ts
CHANGED
|
@@ -9,8 +9,10 @@ import type { Adapter } from "./db/types.ts";
|
|
|
9
9
|
import { type AppDescription } from "./describe.ts";
|
|
10
10
|
import type { AnyModel } from "./model.ts";
|
|
11
11
|
import { type AppDb, type AppUser, type Method, type RouteDef } from "./route.ts";
|
|
12
|
+
import { type RedisClient } from "./redis.ts";
|
|
12
13
|
import { type RateLimitConfig } from "./rate-limit.ts";
|
|
13
14
|
import { type AppJobs, type JobQueueConfig, type JobSource } from "./jobs.ts";
|
|
15
|
+
import { type AppEvents, type EventsConfig } from "./events.ts";
|
|
14
16
|
import { type LogFields, type LoggingConfig } from "./logging.ts";
|
|
15
17
|
import { type TracingConfig } from "./tracing.ts";
|
|
16
18
|
import { type MetricsConfig } from "./metrics.ts";
|
|
@@ -25,6 +27,12 @@ export interface AuthConfig {
|
|
|
25
27
|
}): AppUser | null | undefined | Promise<AppUser | null | undefined>;
|
|
26
28
|
/** Roles of a user, checked when a route uses auth: "<role>". Default: user.roles ?? []. */
|
|
27
29
|
roles?(user: AppUser): string[];
|
|
30
|
+
/**
|
|
31
|
+
* The tenant (organisation, workspace, customer) a user belongs to, for tenant-scoped models
|
|
32
|
+
* (model(name, fields, { tenant: true })): ctx.db filters and stamps their rows with it.
|
|
33
|
+
* Default: user.tenantId. Return null for a user without a tenant.
|
|
34
|
+
*/
|
|
35
|
+
tenant?(user: AppUser): string | null | undefined;
|
|
28
36
|
}
|
|
29
37
|
export interface CorsConfig {
|
|
30
38
|
/** Allowed origins, or "*". */
|
|
@@ -56,7 +64,7 @@ export interface HealthConfig {
|
|
|
56
64
|
path?: string;
|
|
57
65
|
/** Readiness endpoint: 200 when every check passes, 503 otherwise. Default "/ready". */
|
|
58
66
|
readyPath?: string;
|
|
59
|
-
/** Your own checks, by name ("database" and "
|
|
67
|
+
/** Your own checks, by name ("database", "ai" and, with createApp({ redis }), "redis" are built in): { search: () => search.ping() }. */
|
|
60
68
|
checks?: Record<string, HealthCheck>;
|
|
61
69
|
/** Time each check may take before it fails. Default 5000 ms. */
|
|
62
70
|
timeoutMs?: number;
|
|
@@ -96,11 +104,19 @@ export interface AppConfig<Models extends readonly AnyModel[], Modules extends r
|
|
|
96
104
|
*/
|
|
97
105
|
modules?: Modules;
|
|
98
106
|
routes?: RouteSource[];
|
|
99
|
-
/** Background jobs and
|
|
107
|
+
/** Background jobs, crons and event subscriptions: jobs, cron(schedule, job) and on(event, job) values, arrays or modules (import * as jobs from "./jobs.ts"). */
|
|
100
108
|
jobs?: JobSource[];
|
|
101
109
|
/** Where queued jobs are kept: { store: "memory" } (default) or { store: "database" } (Postgres table inferlo_jobs, shared by every instance). */
|
|
102
110
|
jobQueue?: JobQueueConfig;
|
|
103
|
-
/**
|
|
111
|
+
/**
|
|
112
|
+
* Events between services: { transport: "redis" } sends published events through Redis Streams (needs redis and
|
|
113
|
+
* name), so every service with an on(event, job) subscription gets them. Default: events stay in this app.
|
|
114
|
+
*/
|
|
115
|
+
events?: EventsConfig;
|
|
116
|
+
/**
|
|
117
|
+
* Where ctx.cache and app.cache keep entries: { store: "memory" } (default), { store: "database" } (Postgres
|
|
118
|
+
* table inferlo_cache) or { store: "redis" } (createApp({ redis })), both shared by every instance.
|
|
119
|
+
*/
|
|
104
120
|
cache?: CacheConfig;
|
|
105
121
|
/** Database adapter. Default: memory(). Use postgres() from "@browserlessapi/inferlo/postgres" in production. */
|
|
106
122
|
db?: Adapter;
|
|
@@ -116,7 +132,16 @@ export interface AppConfig<Models extends readonly AnyModel[], Modules extends r
|
|
|
116
132
|
mcp?: string | false;
|
|
117
133
|
/** Maximum request body in bytes. Default 1 MiB. */
|
|
118
134
|
maxBodySize?: number;
|
|
119
|
-
/**
|
|
135
|
+
/**
|
|
136
|
+
* A connected Redis client (createClient() from the redis package, after await client.connect()), for
|
|
137
|
+
* rateLimit: { store: "redis" } and cache: { store: "redis" }. /ready checks that it answers. Inferlo never closes it: call client.close()
|
|
138
|
+
* after app.close().
|
|
139
|
+
*/
|
|
140
|
+
redis?: RedisClient;
|
|
141
|
+
/**
|
|
142
|
+
* Where route rateLimit counts are kept: { store: "memory" } (default), { store: "database" } (Postgres) or
|
|
143
|
+
* { store: "redis" } (createApp({ redis })), both shared by every instance.
|
|
144
|
+
*/
|
|
120
145
|
rateLimit?: RateLimitConfig;
|
|
121
146
|
/**
|
|
122
147
|
* Behind a load balancer or proxy that sets X-Forwarded-For: true uses its first address as the client IP
|
|
@@ -190,6 +215,8 @@ export interface App<Models extends readonly AnyModel[]> {
|
|
|
190
215
|
readonly ai: AI;
|
|
191
216
|
/** Background jobs: app.jobs.enqueue(job, input), app.jobs.start() to run them, app.jobs.runDue() in tests. */
|
|
192
217
|
readonly jobs: AppJobs;
|
|
218
|
+
/** Events: app.events.publish(orderPaid, payload) queues the jobs subscribed with on(event, job) in createApp({ jobs }). */
|
|
219
|
+
readonly events: AppEvents;
|
|
193
220
|
/** The app cache, the same as ctx.cache: await app.cache.getOrSet(key, { ttlMs, tags }, compute), app.cache.invalidate(tag). */
|
|
194
221
|
readonly cache: Cache;
|
|
195
222
|
/** Standard fetch handler: export default app works on Bun, Deno and Cloudflare Workers. */
|
package/dist/app.js
CHANGED
|
@@ -6,15 +6,20 @@ import { bindTools, createAI } from "./ai/index.js";
|
|
|
6
6
|
import { memory } from "./db/memory.js";
|
|
7
7
|
import { createAudit } from "./audit.js";
|
|
8
8
|
import { checkRouteCache, createCache, databaseCacheStore, etagFor, etagMatches, memoryCacheStore, resolveCacheConfig, routeCacheKey } from "./cache.js";
|
|
9
|
-
import { bindDb, createDb, guardAdapter } from "./db/table.js";
|
|
9
|
+
import { bindDb, checkTenantId, createDb, guardAdapter } from "./db/table.js";
|
|
10
10
|
import { describeApp } from "./describe.js";
|
|
11
11
|
import { InferloError, didYouMean, suggest } from "./errors.js";
|
|
12
12
|
import { callTool, handleMcp, toolDefinition } from "./mcp.js";
|
|
13
13
|
import { buildOpenAPI } from "./openapi.js";
|
|
14
14
|
import { collectRoutes } from "./route.js";
|
|
15
|
+
import { checkRedisClient, pingRedis, redisCacheStore, redisMissing, redisPrefix, redisRateLimitStore } from "./redis.js";
|
|
15
16
|
import { checkRateLimit, databaseRateLimitStore, memoryRateLimitStore, rateLimitResult, windowMs } from "./rate-limit.js";
|
|
16
|
-
import { clientIp, clientIps } from "./client-ip.js";
|
|
17
|
-
import {
|
|
17
|
+
import { clientIp, clientIps, clientSignals, keepEventStreamOpen, platformWaitUntil } from "./client-ip.js";
|
|
18
|
+
import { redisJobStore } from "./redis-jobs.js";
|
|
19
|
+
import { knownBodies } from "./response-body.js";
|
|
20
|
+
import { collectCrons, collectJobs, collectSubscriptions, createJobs, jobStoreFor, stopWorkers, withTenant } from "./jobs.js";
|
|
21
|
+
import { checkEventsConfig, invalidTransport } from "./events.js";
|
|
22
|
+
import { redisEventTransport } from "./redis-events.js";
|
|
18
23
|
import { ValidationError } from "./schema.js";
|
|
19
24
|
import { createRedactor, redactingLogger, redactValues, secretsOf } from "./redact.js";
|
|
20
25
|
import { defaultLogger, loggingOptions, REQUEST_ID } from "./logging.js";
|
|
@@ -115,7 +120,10 @@ function withHeader(response, name, value) {
|
|
|
115
120
|
}
|
|
116
121
|
function json(data, status, headers) {
|
|
117
122
|
headers.set("content-type", "application/json; charset=utf-8");
|
|
118
|
-
|
|
123
|
+
const text = JSON.stringify(data);
|
|
124
|
+
const response = new Response(text, { status, headers });
|
|
125
|
+
knownBodies.set(response, text);
|
|
126
|
+
return response;
|
|
119
127
|
}
|
|
120
128
|
export function createApp(config = {}) {
|
|
121
129
|
// Everything the app logs goes through the redactor: credentials and secrets never reach the logs.
|
|
@@ -211,13 +219,16 @@ export function createApp(config = {}) {
|
|
|
211
219
|
deprecations.set(r, resolved);
|
|
212
220
|
}
|
|
213
221
|
const storeName = config.rateLimit?.store ?? "memory";
|
|
214
|
-
if (storeName !== "memory" && storeName !== "database") {
|
|
215
|
-
throw new InferloError("IL6007", `Invalid rateLimit store "${String(storeName)}".`, { fix: 'Use createApp({ rateLimit: { store: "memory" } }) or { store: "
|
|
222
|
+
if (storeName !== "memory" && storeName !== "database" && storeName !== "redis") {
|
|
223
|
+
throw new InferloError("IL6007", `Invalid rateLimit store "${String(storeName)}".`, { fix: 'Use createApp({ rateLimit: { store: "memory" } }), { store: "database" } or { store: "redis" }.' });
|
|
216
224
|
}
|
|
225
|
+
const redis = checkRedisClient(config.redis);
|
|
226
|
+
if (storeName === "redis" && !redis)
|
|
227
|
+
throw redisMissing("rateLimit");
|
|
217
228
|
const openapiPath = config.openapi === undefined ? "/openapi.json" : config.openapi;
|
|
218
229
|
const hasTools = routes.some((r) => r.options.tool);
|
|
219
230
|
const mcpPath = config.mcp === undefined ? (hasTools ? "/mcp" : false) : config.mcp;
|
|
220
|
-
const health = resolveHealth(config.health, routes, [openapiPath, mcpPath]);
|
|
231
|
+
const health = resolveHealth(config.health, routes, [openapiPath, mcpPath], redis ? ["redis"] : []);
|
|
221
232
|
// apiVersion("v1", ...) routes get their own OpenAPI document at /v1/openapi.json.
|
|
222
233
|
const versions = versionsOf(routes);
|
|
223
234
|
const versionDocs = new Map(openapiPath ? versions.map((v) => [versionDocPath(v, openapiPath), v]) : []);
|
|
@@ -238,9 +249,12 @@ export function createApp(config = {}) {
|
|
|
238
249
|
const appTracing = tracing ? { ...config.tracing, tracerName: config.tracing.tracerName ?? config.name ?? "inferlo-app" } : undefined;
|
|
239
250
|
const adapter = appTracing ? traceAdapter(config.db ?? memory(), clientTracing(appTracing, "inferlo-app", config.version ?? "0.0.0")) : (config.db ?? memory());
|
|
240
251
|
const db = createDb(models, adapter);
|
|
241
|
-
const rateLimits = storeName === "database" ? databaseRateLimitStore(adapter) : memoryRateLimitStore();
|
|
252
|
+
const rateLimits = storeName === "redis" ? redisRateLimitStore(redis, redisPrefix(config.name)) : storeName === "database" ? databaseRateLimitStore(adapter) : memoryRateLimitStore();
|
|
242
253
|
const cacheConfig = resolveCacheConfig(config.cache);
|
|
243
|
-
|
|
254
|
+
if (cacheConfig.store === "redis" && !redis)
|
|
255
|
+
throw redisMissing("cache");
|
|
256
|
+
const cacheStore = cacheConfig.store === "redis" ? redisCacheStore(redis, redisPrefix(config.name)) : cacheConfig.store === "database" ? databaseCacheStore(adapter) : memoryCacheStore(cacheConfig.maxEntries);
|
|
257
|
+
const cache = createCache(cacheStore, cacheConfig.store);
|
|
244
258
|
const metrics = metricsConfig
|
|
245
259
|
? createMetrics({ app: config.name ?? "inferlo-app", version: config.version ?? "0.0.0", inferlo: INFERLO_VERSION }, metricsConfig.buckets)
|
|
246
260
|
: undefined;
|
|
@@ -260,17 +274,35 @@ export function createApp(config = {}) {
|
|
|
260
274
|
jobModule.set(j.name, m.name);
|
|
261
275
|
const moduleInfo = { modules, routeModule, modelOwner, jobModule };
|
|
262
276
|
const jobSources = [...(config.jobs ?? []), ...modules.flatMap((m) => m.jobs)];
|
|
277
|
+
const transportOption = checkEventsConfig(config.events);
|
|
278
|
+
let eventTransport;
|
|
279
|
+
if (transportOption === "redis") {
|
|
280
|
+
if (!redis)
|
|
281
|
+
throw new InferloError("IL6031", 'events transport "redis" needs a Redis client, but createApp has no redis option.', { fix: 'Create and connect a client with the redis package: const redis = await createClient({ url: process.env.REDIS_URL }).connect(); then createApp({ name: "billing", redis, events: { transport: "redis" } }).' });
|
|
282
|
+
// The app name is the consumer group: two services with one name would split each other's events.
|
|
283
|
+
if (!config.name)
|
|
284
|
+
throw invalidTransport('events transport "redis" needs createApp({ name }): each service reads events as its own consumer group, named after the app.');
|
|
285
|
+
eventTransport = redisEventTransport(redis, { group: config.name });
|
|
286
|
+
}
|
|
287
|
+
else
|
|
288
|
+
eventTransport = transportOption;
|
|
263
289
|
const jobs = createJobs(collectJobs(jobSources), {
|
|
264
290
|
db: db,
|
|
265
291
|
ai,
|
|
266
292
|
cache,
|
|
267
|
-
audit: (run) => createAudit(models, redactor, () => db, { userId: null, source: `job ${run.name}` }),
|
|
268
|
-
store: jobStoreFor(config.jobQueue, adapter)
|
|
293
|
+
audit: (run) => createAudit(models, redactor, () => db, { userId: null, tenantId: run.tenantId, source: `job ${run.name}` }),
|
|
294
|
+
store: jobStoreFor(config.jobQueue, adapter, () => {
|
|
295
|
+
if (!redis)
|
|
296
|
+
throw redisMissing("jobQueue");
|
|
297
|
+
return redisJobStore(redis, redisPrefix(config.name));
|
|
298
|
+
}),
|
|
269
299
|
queue: config.jobQueue?.store ?? "memory",
|
|
270
300
|
logger,
|
|
271
301
|
onRun: metrics ? (name, outcome, ms) => metrics.job(name, outcome, ms / 1000) : undefined,
|
|
272
302
|
tracing: appTracing ? jobTracing(appTracing, "inferlo-app", config.version ?? "0.0.0") : undefined,
|
|
273
|
-
|
|
303
|
+
eventTransport,
|
|
304
|
+
}, collectCrons(jobSources), collectSubscriptions(jobSources));
|
|
305
|
+
const events = jobs.events;
|
|
274
306
|
const maxBody = config.maxBodySize ?? 1024 * 1024;
|
|
275
307
|
const secureHeaders = resolveSecureHeaders(config.secureHeaders);
|
|
276
308
|
const cors = config.cors === true ? { origin: "*" } : config.cors || undefined;
|
|
@@ -294,6 +326,8 @@ export function createApp(config = {}) {
|
|
|
294
326
|
}
|
|
295
327
|
};
|
|
296
328
|
}
|
|
329
|
+
if (redis)
|
|
330
|
+
readinessChecks.redis = () => pingRedis(redis);
|
|
297
331
|
Object.assign(readinessChecks, health?.checks);
|
|
298
332
|
const runCheck = async (name, check) => {
|
|
299
333
|
const started = Date.now();
|
|
@@ -349,6 +383,13 @@ export function createApp(config = {}) {
|
|
|
349
383
|
}
|
|
350
384
|
return { name: tool.name, status: response.status, output, text: text || String(response.status) };
|
|
351
385
|
}, describeTool, signal);
|
|
386
|
+
const tenantScope = (user) => {
|
|
387
|
+
if (!user)
|
|
388
|
+
return "none";
|
|
389
|
+
const id = config.auth?.tenant ? config.auth.tenant(user) : user.tenantId;
|
|
390
|
+
return id === null || id === undefined ? "none" : { tenant: checkTenantId(id) };
|
|
391
|
+
};
|
|
392
|
+
const tenantOf = (scope) => (typeof scope === "object" ? scope.tenant : null);
|
|
352
393
|
const roles = (user) => config.auth?.roles?.(user) ?? (user.roles ?? []);
|
|
353
394
|
const errorResponse = (error, headers, req, requestId) => {
|
|
354
395
|
const span = requestSpans.get(req);
|
|
@@ -457,8 +498,18 @@ export function createApp(config = {}) {
|
|
|
457
498
|
const limit = opts.timeoutMs === undefined ? requestTimeoutMs : opts.timeoutMs;
|
|
458
499
|
// timeout aborts when the route takes too long; signal (ctx.signal) also when the client disconnects.
|
|
459
500
|
const timeout = new AbortController();
|
|
460
|
-
|
|
501
|
+
// Combined on first use: AbortSignal.any is costly, and most handlers never read ctx.signal.
|
|
502
|
+
let combined;
|
|
503
|
+
const signal = () => (combined ??= AbortSignal.any([clientSignals.get(req) ?? req.signal, timeout.signal]));
|
|
461
504
|
let requestDb;
|
|
505
|
+
let queues;
|
|
506
|
+
let requestUser = null;
|
|
507
|
+
const tenantQueues = () => {
|
|
508
|
+
if (queues)
|
|
509
|
+
return queues;
|
|
510
|
+
const scope = tenantScope(requestUser);
|
|
511
|
+
return (queues = typeof scope === "object" ? withTenant({ jobs, events }, scope.tenant) : { jobs, events });
|
|
512
|
+
};
|
|
462
513
|
const run = async () => {
|
|
463
514
|
// Auth
|
|
464
515
|
let user = null;
|
|
@@ -466,6 +517,7 @@ export function createApp(config = {}) {
|
|
|
466
517
|
user = testUsers.get(req) ?? null;
|
|
467
518
|
else if (config.auth)
|
|
468
519
|
user = (await config.auth.resolve(req, { db: db, url })) ?? null;
|
|
520
|
+
requestUser = user;
|
|
469
521
|
const level = opts.auth ?? "user";
|
|
470
522
|
if (level !== "public") {
|
|
471
523
|
if (!user)
|
|
@@ -475,9 +527,12 @@ export function createApp(config = {}) {
|
|
|
475
527
|
}
|
|
476
528
|
if (opts.permission)
|
|
477
529
|
await config.permissions.authorize(opts.permission, { user });
|
|
478
|
-
// Rate limit: counted per user
|
|
530
|
+
// Rate limit: counted per user, tenant or IP, after auth so failed sign-ins on private routes do not use it up.
|
|
531
|
+
// by "tenant" counts users without a tenant one by one; by "user" and "tenant" count requests without a user by IP.
|
|
479
532
|
if (opts.rateLimit) {
|
|
480
|
-
const
|
|
533
|
+
const by = opts.rateLimit.by ?? "user";
|
|
534
|
+
const scope = by === "tenant" && user ? tenantScope(user) : "none";
|
|
535
|
+
const who = typeof scope === "object" ? `tenant:${scope.tenant}` : by !== "ip" && user ? `user:${user.id}` : `ip:${ip}`;
|
|
481
536
|
const hit = await rateLimits.hit(`${def.method} ${def.path} ${who}`, windowMs(opts.rateLimit));
|
|
482
537
|
const limited = rateLimitResult(opts.rateLimit, hit);
|
|
483
538
|
for (const [k, v] of Object.entries(limited.headers))
|
|
@@ -521,13 +576,13 @@ export function createApp(config = {}) {
|
|
|
521
576
|
// Response cache: after auth, permissions, rate limits and input checks, so a cached response is only
|
|
522
577
|
// served to callers who may call the route with valid input.
|
|
523
578
|
const routeCache = opts.cache;
|
|
524
|
-
const cacheKey = routeCache ? await routeCacheKey(def.method, def.path, routeCache, user?.id, url) : undefined;
|
|
579
|
+
const cacheKey = routeCache ? await routeCacheKey(def.method, def.path, routeCache, user?.id, url, routeCache.by === "tenant" && user ? tenantOf(tenantScope(user)) : undefined) : undefined;
|
|
525
580
|
const cacheHeaders = (outcome, etag) => {
|
|
526
581
|
headers.set("x-inferlo-cache", outcome);
|
|
527
582
|
headers.set("etag", etag);
|
|
528
583
|
if (!headers.has("cache-control"))
|
|
529
584
|
headers.set("cache-control", `${(routeCache.by ?? "user") === "public" && (opts.auth ?? "user") === "public" ? "public" : "private"}, no-cache`);
|
|
530
|
-
if ((routeCache.by ?? "user")
|
|
585
|
+
if ((routeCache.by ?? "user") !== "public")
|
|
531
586
|
headers.append("vary", "Authorization, Cookie");
|
|
532
587
|
};
|
|
533
588
|
const cachedAnswer = (body, etag) => {
|
|
@@ -554,12 +609,26 @@ export function createApp(config = {}) {
|
|
|
554
609
|
user,
|
|
555
610
|
get db() {
|
|
556
611
|
// Built on first use: after a timeout, new queries fail with IL2007 instead of running.
|
|
557
|
-
|
|
612
|
+
// Tenant-scoped tables are filtered by the signed-in user's tenant (none without one).
|
|
613
|
+
return (requestDb ??= bindDb(models, guardAdapter(adapter, timeout.signal), tenantScope(user)));
|
|
614
|
+
},
|
|
615
|
+
// ctx.ai and ctx.audit are built on first use too, so routes that do not use them pay nothing.
|
|
616
|
+
get ai() {
|
|
617
|
+
const value = toolsFor(req, signal());
|
|
618
|
+
Object.defineProperty(ctx, "ai", { value, enumerable: true });
|
|
619
|
+
return value;
|
|
620
|
+
},
|
|
621
|
+
get signal() {
|
|
622
|
+
return signal();
|
|
558
623
|
},
|
|
559
|
-
ai: toolsFor(req, signal),
|
|
560
|
-
signal,
|
|
561
624
|
requestId,
|
|
562
|
-
jobs
|
|
625
|
+
// With a tenant, jobs and events queued by the request carry it.
|
|
626
|
+
get jobs() {
|
|
627
|
+
return tenantQueues().jobs;
|
|
628
|
+
},
|
|
629
|
+
get events() {
|
|
630
|
+
return tenantQueues().events;
|
|
631
|
+
},
|
|
563
632
|
cache,
|
|
564
633
|
req,
|
|
565
634
|
url,
|
|
@@ -575,7 +644,11 @@ export function createApp(config = {}) {
|
|
|
575
644
|
handlerHeaders.push([name.toLowerCase(), value]);
|
|
576
645
|
},
|
|
577
646
|
waitUntil: (p) => void pending.push(p.catch((e) => logger.error("waitUntil task failed", e, { requestId }))),
|
|
578
|
-
audit
|
|
647
|
+
get audit() {
|
|
648
|
+
const value = createAudit(models, redactor, () => ctx.db, { userId: user?.id ?? null, tenantId: tenantOf(tenantScope(user)), source: `${def.method} ${def.path}`, requestId });
|
|
649
|
+
Object.defineProperty(ctx, "audit", { value, enumerable: true });
|
|
650
|
+
return value;
|
|
651
|
+
},
|
|
579
652
|
};
|
|
580
653
|
const result = await def.handler(ctx);
|
|
581
654
|
if (result instanceof Response) {
|
|
@@ -727,9 +800,9 @@ export function createApp(config = {}) {
|
|
|
727
800
|
}
|
|
728
801
|
if (pending.length) {
|
|
729
802
|
const all = Promise.all(pending);
|
|
730
|
-
const execution = rest
|
|
731
|
-
if (execution
|
|
732
|
-
execution
|
|
803
|
+
const execution = platformWaitUntil(rest);
|
|
804
|
+
if (execution)
|
|
805
|
+
execution(all);
|
|
733
806
|
else {
|
|
734
807
|
// Kept until it settles, so app.close() waits for it.
|
|
735
808
|
tasks.add(all);
|
|
@@ -750,6 +823,7 @@ export function createApp(config = {}) {
|
|
|
750
823
|
db,
|
|
751
824
|
ai,
|
|
752
825
|
jobs,
|
|
826
|
+
events,
|
|
753
827
|
cache,
|
|
754
828
|
get closing() {
|
|
755
829
|
return closing;
|
|
@@ -758,7 +832,10 @@ export function createApp(config = {}) {
|
|
|
758
832
|
inFlight++;
|
|
759
833
|
metrics?.inFlight(1);
|
|
760
834
|
try {
|
|
761
|
-
|
|
835
|
+
const response = await handle(req, rest);
|
|
836
|
+
if (rest.length)
|
|
837
|
+
keepEventStreamOpen(rest[0], req, response);
|
|
838
|
+
return response;
|
|
762
839
|
}
|
|
763
840
|
finally {
|
|
764
841
|
inFlight--;
|
|
@@ -881,7 +958,7 @@ export function createApp(config = {}) {
|
|
|
881
958
|
});
|
|
882
959
|
return app;
|
|
883
960
|
}
|
|
884
|
-
function resolveHealth(option, routes, taken) {
|
|
961
|
+
function resolveHealth(option, routes, taken, builtIn) {
|
|
885
962
|
if (option === undefined || option === false)
|
|
886
963
|
return undefined;
|
|
887
964
|
const bad = (message, fix) => new InferloError("IL6014", message, { fix });
|
|
@@ -898,9 +975,9 @@ function resolveHealth(option, routes, taken) {
|
|
|
898
975
|
if (!Number.isFinite(resolved.timeoutMs) || resolved.timeoutMs <= 0)
|
|
899
976
|
throw bad(`health.timeoutMs must be a positive number of milliseconds, got ${String(resolved.timeoutMs)}.`, "Use health: { timeoutMs: 5000 }.");
|
|
900
977
|
if (typeof resolved.checks !== "object" || resolved.checks === null)
|
|
901
|
-
throw bad("health.checks must be an object of functions.", "Use health: { checks: {
|
|
978
|
+
throw bad("health.checks must be an object of functions.", "Use health: { checks: { search: () => search.ping() } }.");
|
|
902
979
|
for (const [name, check] of Object.entries(resolved.checks)) {
|
|
903
|
-
if (name === "database" || name === "ai")
|
|
980
|
+
if (name === "database" || name === "ai" || builtIn.includes(name))
|
|
904
981
|
throw bad(`health.checks.${name} is built in.`, `Give your check another name, for example "${name}Replica".`);
|
|
905
982
|
if (typeof check !== "function")
|
|
906
983
|
throw bad(`health.checks.${name} must be a function.`, `Use health: { checks: { ${name}: async () => { ... } } }; throw when it is not ready.`);
|