@forestadmin/agent-bff 1.20.2 → 1.22.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 +64 -6
- package/dist/ai/ai-proxy-client.d.ts +26 -0
- package/dist/ai/ai-proxy-client.js +74 -0
- package/dist/ai/ai-proxy-timeout-error.d.ts +5 -0
- package/dist/ai/ai-proxy-timeout-error.js +11 -0
- package/dist/ai/ai-routes-middleware.d.ts +15 -0
- package/dist/ai/ai-routes-middleware.js +96 -0
- package/dist/api-key/agent-token.js +4 -7
- package/dist/auth/auth-mode.d.ts +2 -0
- package/dist/auth/auth-mode.js +9 -1
- package/dist/cli-core.d.ts +9 -0
- package/dist/cli-core.js +55 -7
- package/dist/cli-dispatch.js +15 -3
- package/dist/config/env-config.d.ts +3 -1
- package/dist/config/env-config.js +10 -8
- package/dist/data/agent-query.d.ts +4 -0
- package/dist/data/agent-query.js +53 -41
- package/dist/data/request-schemas.d.ts +49 -0
- package/dist/data/request-schemas.js +40 -0
- package/dist/docs/docs-samples.js +24 -16
- package/dist/http/bff-local-errors.d.ts +4 -0
- package/dist/http/bff-local-errors.js +19 -1
- package/dist/http/body-limit.d.ts +1 -0
- package/dist/http/body-limit.js +3 -1
- package/dist/oauth/oauth-error.d.ts +3 -2
- package/dist/oauth/oauth-error.js +5 -4
- package/dist/oauth/session-lifecycle.js +2 -2
- package/dist/openapi/openapi-document.d.ts +5 -1
- package/dist/openapi/openapi-document.js +133 -17
- package/dist/openapi/openapi-routes.d.ts +2 -1
- package/dist/openapi/openapi-routes.js +9 -4
- package/dist/openapi/schemas.d.ts +11 -0
- package/dist/openapi/schemas.js +45 -19
- package/dist/openapi/unfolded-document.d.ts +5 -1
- package/dist/openapi/unfolded-document.js +6 -3
- package/dist/openapi/zod-openapi.d.ts +1 -2
- package/dist/openapi/zod-openapi.js +5 -4
- package/dist/zod.d.ts +3 -0
- package/dist/zod.js +11 -0
- package/package.json +3 -1
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export declare class OAuthRequestError extends Error {
|
|
2
2
|
readonly status: number;
|
|
3
3
|
readonly type: string;
|
|
4
|
-
|
|
4
|
+
readonly cause?: unknown;
|
|
5
|
+
constructor(status: number, type: string, message: string, cause?: unknown);
|
|
5
6
|
}
|
|
6
7
|
export interface OAuthErrorBody {
|
|
7
8
|
error: string;
|
|
@@ -15,5 +16,5 @@ export declare function unsupportedGrantType(message: string): OAuthRequestError
|
|
|
15
16
|
export declare function forestIdentityNotAllowed(message: string): OAuthRequestError;
|
|
16
17
|
export declare function sessionExpired(message: string): OAuthRequestError;
|
|
17
18
|
export declare function sessionInvalidated(message: string): OAuthRequestError;
|
|
18
|
-
export declare function serverError(message: string): OAuthRequestError;
|
|
19
|
+
export declare function serverError(message: string, cause?: unknown): OAuthRequestError;
|
|
19
20
|
//# sourceMappingURL=oauth-error.d.ts.map
|
|
@@ -11,11 +11,12 @@ exports.sessionExpired = sessionExpired;
|
|
|
11
11
|
exports.sessionInvalidated = sessionInvalidated;
|
|
12
12
|
exports.serverError = serverError;
|
|
13
13
|
class OAuthRequestError extends Error {
|
|
14
|
-
constructor(status, type, message) {
|
|
14
|
+
constructor(status, type, message, cause) {
|
|
15
15
|
super(message);
|
|
16
16
|
this.name = 'OAuthRequestError';
|
|
17
17
|
this.status = status;
|
|
18
18
|
this.type = type;
|
|
19
|
+
this.cause = cause;
|
|
19
20
|
}
|
|
20
21
|
}
|
|
21
22
|
exports.OAuthRequestError = OAuthRequestError;
|
|
@@ -43,7 +44,7 @@ function sessionExpired(message) {
|
|
|
43
44
|
function sessionInvalidated(message) {
|
|
44
45
|
return new OAuthRequestError(401, 'session_invalidated', message);
|
|
45
46
|
}
|
|
46
|
-
function serverError(message) {
|
|
47
|
-
return new OAuthRequestError(502, 'server_error', message);
|
|
47
|
+
function serverError(message, cause) {
|
|
48
|
+
return new OAuthRequestError(502, 'server_error', message, cause);
|
|
48
49
|
}
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGgtZXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvb2F1dGgvb2F1dGgtZXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBbUJBLGtDQUVDO0FBRUQsd0NBRUM7QUFFRCxzQ0FFQztBQUVELG9DQUVDO0FBRUQsb0RBRUM7QUFFRCw0REFFQztBQUVELHdDQUVDO0FBRUQsZ0RBRUM7QUFFRCxrQ0FFQztBQXJERCxNQUFhLGlCQUFrQixTQUFRLEtBQUs7SUFLMUMsWUFBWSxNQUFjLEVBQUUsSUFBWSxFQUFFLE9BQWUsRUFBRSxLQUFlO1FBQ3hFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsbUJBQW1CLENBQUM7UUFDaEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztDQUNGO0FBWkQsOENBWUM7QUFPRCxTQUFnQixXQUFXLENBQUMsS0FBd0I7SUFDbEQsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUNqRSxDQUFDO0FBRUQsU0FBZ0IsY0FBYyxDQUFDLE9BQWU7SUFDNUMsT0FBTyxJQUFJLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxpQkFBaUIsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNoRSxDQUFDO0FBRUQsU0FBZ0IsYUFBYSxDQUFDLE9BQWU7SUFDM0MsT0FBTyxJQUFJLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUMvRCxDQUFDO0FBRUQsU0FBZ0IsWUFBWSxDQUFDLE9BQWU7SUFDMUMsT0FBTyxJQUFJLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDOUQsQ0FBQztBQUVELFNBQWdCLG9CQUFvQixDQUFDLE9BQWU7SUFDbEQsT0FBTyxJQUFJLGlCQUFpQixDQUFDLEdBQUcsRUFBRSx3QkFBd0IsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUN2RSxDQUFDO0FBRUQsU0FBZ0Isd0JBQXdCLENBQUMsT0FBZTtJQUN0RCxPQUFPLElBQUksaUJBQWlCLENBQUMsR0FBRyxFQUFFLDZCQUE2QixFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzVFLENBQUM7QUFFRCxTQUFnQixjQUFjLENBQUMsT0FBZTtJQUM1QyxPQUFPLElBQUksaUJBQWlCLENBQUMsR0FBRyxFQUFFLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2hFLENBQUM7QUFFRCxTQUFnQixrQkFBa0IsQ0FBQyxPQUFlO0lBQ2hELE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUscUJBQXFCLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDcEUsQ0FBQztBQUVELFNBQWdCLFdBQVcsQ0FBQyxPQUFlLEVBQUUsS0FBZTtJQUMxRCxPQUFPLElBQUksaUJBQWlCLENBQUMsR0FBRyxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDcEUsQ0FBQyJ9
|
|
@@ -26,7 +26,7 @@ async function refreshAndPersist(sid, store, serverClient) {
|
|
|
26
26
|
if (error instanceof forest_server_client_1.OAuthExchangeError && CLIENT_ERROR_CODES.has(error.error)) {
|
|
27
27
|
throw (0, oauth_error_1.sessionExpired)('The Forest server rejected the refresh token');
|
|
28
28
|
}
|
|
29
|
-
throw (0, oauth_error_1.serverError)('Failed to reach the Forest server to refresh the session');
|
|
29
|
+
throw (0, oauth_error_1.serverError)('Failed to reach the Forest server to refresh the session', error);
|
|
30
30
|
}
|
|
31
31
|
if (!store.get(sid)) {
|
|
32
32
|
throw (0, oauth_error_1.sessionExpired)('Session expired during token refresh');
|
|
@@ -54,4 +54,4 @@ async function ensureFreshServerAccess({ sid, store, serverClient, }) {
|
|
|
54
54
|
inFlightRefreshesBySid.set(sid, refresh);
|
|
55
55
|
return refresh;
|
|
56
56
|
}
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1saWZlY3ljbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvb2F1dGgvc2Vzc2lvbi1saWZlY3ljbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUEyREEsMENBd0JDO0FBaEZELGdFQUF3QztBQUV4QyxpRUFBNEQ7QUFDNUQsK0NBQTREO0FBUTVELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO0FBRTNGLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxHQUFHLEVBQTJCLENBQUM7QUFFbEUsU0FBUyxpQkFBaUIsQ0FBQyxlQUF1QjtJQUNoRCxNQUFNLE9BQU8sR0FBRyxzQkFBWSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQTRCLENBQUM7SUFFaEYsT0FBTyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUMzQixDQUFDO0FBRUQsS0FBSyxVQUFVLGlCQUFpQixDQUM5QixHQUFXLEVBQ1gsS0FBbUIsRUFDbkIsWUFBZ0M7SUFFaEMsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRXRELElBQUksY0FBYyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ2pDLE1BQU0sSUFBQSw0QkFBYyxFQUFDLDhCQUE4QixDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELElBQUksT0FBc0UsQ0FBQztJQUUzRSxJQUFJLENBQUM7UUFDSCxPQUFPLEdBQUcsTUFBTSxZQUFZLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixJQUFJLEtBQUssWUFBWSx5Q0FBa0IsSUFBSSxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDL0UsTUFBTSxJQUFBLDRCQUFjLEVBQUMsOENBQThDLENBQUMsQ0FBQztRQUN2RSxDQUFDO1FBRUQsTUFBTSxJQUFBLHlCQUFXLEVBQUMsMERBQTBELEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdkYsQ0FBQztJQUVELElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDcEIsTUFBTSxJQUFBLDRCQUFjLEVBQUMsc0NBQXNDLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRTtRQUMxQixlQUFlLEVBQUUsT0FBTyxDQUFDLGVBQWU7UUFDeEMsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLGdCQUFnQjtLQUMzQyxDQUFDLENBQUM7SUFFSCxPQUFPLE9BQU8sQ0FBQyxlQUFlLENBQUM7QUFDakMsQ0FBQztBQUVjLEtBQUssVUFBVSx1QkFBdUIsQ0FBQyxFQUNwRCxHQUFHLEVBQ0gsS0FBSyxFQUNMLFlBQVksR0FDa0I7SUFDOUIsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUUvQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixNQUFNLElBQUEsNEJBQWMsRUFBQyw4QkFBOEIsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxJQUFJLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQy9FLE9BQU8sT0FBTyxDQUFDLGVBQWUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsTUFBTSxRQUFRLEdBQUcsc0JBQXNCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pELElBQUksUUFBUTtRQUFFLE9BQU8sUUFBUSxDQUFDO0lBRTlCLE1BQU0sT0FBTyxHQUFHLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRTtRQUN2RSxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckMsQ0FBQyxDQUFDLENBQUM7SUFDSCxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRXpDLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMifQ==
|
|
@@ -2,6 +2,10 @@ import type { Unfolding } from './unfolding';
|
|
|
2
2
|
import type { OpenAPIObject } from 'openapi3-ts/oas31';
|
|
3
3
|
export declare const OPENAPI_VERSION = "3.1.0";
|
|
4
4
|
export declare const ROUTE_PREFIX = "/agent/v1";
|
|
5
|
-
export
|
|
5
|
+
export interface GenerateOpenApiDocumentOptions {
|
|
6
|
+
unfolding?: Unfolding;
|
|
7
|
+
hasAiQueryRoute?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function generateOpenApiDocument(version: string, { unfolding, hasAiQueryRoute }?: GenerateOpenApiDocumentOptions): OpenAPIObject;
|
|
6
10
|
export declare function serializeOpenApi(document: OpenAPIObject): string;
|
|
7
11
|
//# sourceMappingURL=openapi-document.d.ts.map
|
|
@@ -1,4 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
37
|
};
|
|
@@ -11,12 +44,12 @@ const component_pool_1 = __importDefault(require("./component-pool"));
|
|
|
11
44
|
const schemas_1 = require("./schemas");
|
|
12
45
|
const unfolded_paths_1 = __importDefault(require("./unfolded-paths"));
|
|
13
46
|
const zod_openapi_1 = require("./zod-openapi");
|
|
14
|
-
const body_limit_1 =
|
|
47
|
+
const body_limit_1 = __importStar(require("../http/body-limit"));
|
|
15
48
|
exports.OPENAPI_VERSION = '3.1.0';
|
|
16
49
|
exports.ROUTE_PREFIX = '/agent/v1';
|
|
17
50
|
const SESSION_SCHEME = 'bffSession';
|
|
18
51
|
const API_KEY_SCHEME = 'bffApiKey';
|
|
19
|
-
const SECURITY = [{ [API_KEY_SCHEME]: [] }];
|
|
52
|
+
const SECURITY = [{ [SESSION_SCHEME]: [] }, { [API_KEY_SCHEME]: [] }];
|
|
20
53
|
const ERROR_STATUSES = {
|
|
21
54
|
400: 'Malformed body, a malformed URL-encoded path segment, an invalid filter operator, a filter nested too deep, ambiguous credentials, an unsupported page, a missing or invalid timezone, an unknown submitted action field, or a rejected action form (type action_error)',
|
|
22
55
|
401: 'Missing, invalid, or expired credentials',
|
|
@@ -43,6 +76,13 @@ const RETRY_AFTER_HEADER = {
|
|
|
43
76
|
schema: { type: 'integer' },
|
|
44
77
|
},
|
|
45
78
|
};
|
|
79
|
+
function registerErrorComponent(registry, name, { description, schema, headers }) {
|
|
80
|
+
return registry.registerComponent('responses', name, {
|
|
81
|
+
description,
|
|
82
|
+
content: { 'application/json': { schema } },
|
|
83
|
+
...(headers ? { headers } : {}),
|
|
84
|
+
}).ref;
|
|
85
|
+
}
|
|
46
86
|
// Every error body is identical across paths, and their descriptions are long: inlining them costs
|
|
47
87
|
// ~2.8kB per path, which the unfolded document multiplies by every collection, relation and action.
|
|
48
88
|
// Registering them once as components keeps a path's error block to a dozen refs.
|
|
@@ -53,27 +93,23 @@ function registerErrorResponses(registry, statuses, withActionResults) {
|
|
|
53
93
|
const description = ERROR_STATUSES[status];
|
|
54
94
|
if (!description)
|
|
55
95
|
throw new Error(`No OpenAPI description for error status ${status}`);
|
|
56
|
-
byStatus[status] = registry
|
|
96
|
+
byStatus[status] = registerErrorComponent(registry, `Error${status}`, {
|
|
57
97
|
description,
|
|
58
|
-
|
|
98
|
+
schema: { $ref: ERROR_RESPONSE_REF },
|
|
59
99
|
...(status === '503' ? { headers: RETRY_AFTER_HEADER } : {}),
|
|
60
|
-
})
|
|
100
|
+
});
|
|
61
101
|
});
|
|
62
102
|
// A document with no action path must not carry this response, nor the messageless body it
|
|
63
103
|
// references: an unreferenced component trips redocly's unused-component rule.
|
|
64
104
|
if (!withActionResults)
|
|
65
105
|
return { byStatus, unsupportedActionResult: byStatus['501'] };
|
|
66
106
|
registry.register('MessagelessErrorResponse', schemas_1.MessagelessErrorResponseSchema);
|
|
67
|
-
const unsupportedActionResult = registry
|
|
107
|
+
const unsupportedActionResult = registerErrorComponent(registry, UNSUPPORTED_ACTION_RESULT_COMPONENT, {
|
|
68
108
|
description: UNSUPPORTED_RESULT_DESCRIPTION,
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
schema: {
|
|
72
|
-
anyOf: [{ $ref: ERROR_RESPONSE_REF }, { $ref: MESSAGELESS_ERROR_RESPONSE_REF }],
|
|
73
|
-
},
|
|
74
|
-
},
|
|
109
|
+
schema: {
|
|
110
|
+
anyOf: [{ $ref: ERROR_RESPONSE_REF }, { $ref: MESSAGELESS_ERROR_RESPONSE_REF }],
|
|
75
111
|
},
|
|
76
|
-
})
|
|
112
|
+
});
|
|
77
113
|
return { byStatus, unsupportedActionResult };
|
|
78
114
|
}
|
|
79
115
|
function errorResponses(refs, executeResults) {
|
|
@@ -95,6 +131,53 @@ const DATA_ERRORS = [
|
|
|
95
131
|
'502',
|
|
96
132
|
'503',
|
|
97
133
|
];
|
|
134
|
+
const AI_RELAYED_OR_ENVELOPE = 'Below 500 the BFF relays whatever JSON the Forest AI proxy answered, unchanged, so the authority ' +
|
|
135
|
+
'on this body is the upstream contract and not the BFF one. When the upstream answer carried no ' +
|
|
136
|
+
'JSON body, the BFF substitutes its own `{ error: { type, status, message } }` envelope at the ' +
|
|
137
|
+
'same status. A consumer must accept either shape.';
|
|
138
|
+
const AI_DUAL_SHAPED_ERRORS = {
|
|
139
|
+
400: `The BFF could not parse the body as JSON, or the Forest AI proxy rejected the query. ${AI_RELAYED_OR_ENVELOPE}`,
|
|
140
|
+
401: `The BFF session is missing, invalid or expired, or the Forest server refused the access token this route forwards. ${AI_RELAYED_OR_ENVELOPE}`,
|
|
141
|
+
403: `The request presented an API key instead of a session (type oauth_required), or the Forest server refused the query. ${AI_RELAYED_OR_ENVELOPE}`,
|
|
142
|
+
413: `The request body exceeds the AI query limit of ${body_limit_1.AI_BODY_LIMIT}, or the Forest AI proxy refused it as too large. ${AI_RELAYED_OR_ENVELOPE}`,
|
|
143
|
+
415: `The request declares a character set the BFF cannot decode. ${AI_RELAYED_OR_ENVELOPE}`,
|
|
144
|
+
429: `The Forest AI proxy rate-limited the query. ${AI_RELAYED_OR_ENVELOPE}`,
|
|
145
|
+
};
|
|
146
|
+
const AI_ENVELOPE_ERRORS = {
|
|
147
|
+
500: 'The BFF hit an unexpected error, or the Forest server answered a 500 whose body is withheld',
|
|
148
|
+
502: 'The Forest server could not be reached, or answered a status the BFF does not relay',
|
|
149
|
+
503: 'The Forest server reported itself unavailable',
|
|
150
|
+
504: 'The Forest server did not answer the AI query before the BFF timeout',
|
|
151
|
+
};
|
|
152
|
+
const AI_DEFAULT_DESCRIPTION = 'Any other status this relay can answer. Below 500 the body is the Forest AI proxy answer, ' +
|
|
153
|
+
'relayed unchanged when it was JSON and replaced by the BFF ' +
|
|
154
|
+
'`{ error: { type, status, message } }` envelope when it was not. At 500 and above the body is ' +
|
|
155
|
+
'always that envelope, so no upstream infrastructure detail reaches the caller. An upstream ' +
|
|
156
|
+
'answer below 400 that carries no JSON body is reported as 502, since there is nothing to relay.';
|
|
157
|
+
const AI_COMPONENT_SUFFIX = 'AiQuery';
|
|
158
|
+
function registerAiQueryErrorResponses(registry) {
|
|
159
|
+
const dualShaped = Object.entries(AI_DUAL_SHAPED_ERRORS).map(([status, description]) => [
|
|
160
|
+
status,
|
|
161
|
+
registerErrorComponent(registry, `Error${status}${AI_COMPONENT_SUFFIX}`, {
|
|
162
|
+
description,
|
|
163
|
+
schema: {},
|
|
164
|
+
}),
|
|
165
|
+
]);
|
|
166
|
+
const envelope = Object.entries(AI_ENVELOPE_ERRORS).map(([status, description]) => [
|
|
167
|
+
status,
|
|
168
|
+
registerErrorComponent(registry, `Error${status}${AI_COMPONENT_SUFFIX}`, {
|
|
169
|
+
description,
|
|
170
|
+
schema: { $ref: ERROR_RESPONSE_REF },
|
|
171
|
+
}),
|
|
172
|
+
]);
|
|
173
|
+
return {
|
|
174
|
+
...Object.fromEntries([...dualShaped, ...envelope]),
|
|
175
|
+
default: registerErrorComponent(registry, `ErrorDefault${AI_COMPONENT_SUFFIX}`, {
|
|
176
|
+
description: AI_DEFAULT_DESCRIPTION,
|
|
177
|
+
schema: {},
|
|
178
|
+
}),
|
|
179
|
+
};
|
|
180
|
+
}
|
|
98
181
|
const ROUTES = [
|
|
99
182
|
{
|
|
100
183
|
path: '/{collection}/list',
|
|
@@ -194,17 +277,48 @@ const UNFOLDED_DESCRIPTION = 'Paths are unfolded: one per exposed collection, to
|
|
|
194
277
|
"collection's capabilities. Only to-many relations appear; a to-one or polymorphic relation has " +
|
|
195
278
|
'no list or count route. This document describes the whole exposed schema regardless of the ' +
|
|
196
279
|
'caller: it is not filtered by the permissions of whoever fetched it.';
|
|
197
|
-
function
|
|
280
|
+
function registerAiQueryPath(registry, aiErrorRefs) {
|
|
281
|
+
registry.registerPath({
|
|
282
|
+
method: 'post',
|
|
283
|
+
path: `${exports.ROUTE_PREFIX}/ai/query`,
|
|
284
|
+
operationId: 'aiQuery',
|
|
285
|
+
summary: 'Relay an AI query to the Forest server',
|
|
286
|
+
description: 'Relays the body unchanged to the Forest AI proxy, authenticated with the OAuth session ' +
|
|
287
|
+
'held by the BFF. Requires a session: an API key is rejected with 403 oauth_required, ' +
|
|
288
|
+
'because only the OAuth flow yields the Forest access token this route forwards. The ' +
|
|
289
|
+
'environment and rendering are derived server-side, so sending forest-* headers has no ' +
|
|
290
|
+
`effect. The body limit is ${body_limit_1.AI_BODY_LIMIT} here rather than the ${body_limit_1.default} of every ` +
|
|
291
|
+
'other route, and only application/json is parsed: any other content type arrives as an ' +
|
|
292
|
+
'empty body, is relayed as {} and the Forest server rejects the query. This path is ' +
|
|
293
|
+
'published only by a ' +
|
|
294
|
+
'deployment whose OAuth configuration is complete, since the relay needs a session.',
|
|
295
|
+
security: [{ [SESSION_SCHEME]: [] }],
|
|
296
|
+
request: {
|
|
297
|
+
body: { required: true, content: { 'application/json': { schema: schemas_1.AiQueryRequestSchema } } },
|
|
298
|
+
},
|
|
299
|
+
responses: {
|
|
300
|
+
200: {
|
|
301
|
+
description: 'The AI provider response, passed through unchanged',
|
|
302
|
+
content: { 'application/json': { schema: zod_openapi_1.z.unknown() } },
|
|
303
|
+
},
|
|
304
|
+
...aiErrorRefs,
|
|
305
|
+
},
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
function generateOpenApiDocument(version, { unfolding, hasAiQueryRoute = false } = {}) {
|
|
198
309
|
const registry = new zod_to_openapi_1.OpenAPIRegistry();
|
|
199
310
|
const hasActions = unfolding === undefined ||
|
|
200
311
|
unfolding.collections.some(collection => collection.actions.length > 0);
|
|
201
312
|
const errorRefs = registerErrorResponses(registry, DATA_ERRORS, hasActions);
|
|
313
|
+
const aiErrorRefs = hasAiQueryRoute ? registerAiQueryErrorResponses(registry) : undefined;
|
|
202
314
|
const timezoneHeader = [registry.registerParameter(TIMEZONE_HEADER_COMPONENT, TIMEZONE_HEADER)];
|
|
203
315
|
registry.registerComponent('securitySchemes', SESSION_SCHEME, {
|
|
204
316
|
type: 'http',
|
|
205
317
|
scheme: 'bearer',
|
|
206
318
|
description: 'Mode 1: the BFF session token issued after the OAuth login. Accepted on the context ' +
|
|
207
|
-
'contract
|
|
319
|
+
'contract and on every data and action route, where the BFF mints the agent token from the ' +
|
|
320
|
+
'session. The session must carry a usable rendering, otherwise the request is rejected ' +
|
|
321
|
+
'with 401.',
|
|
208
322
|
});
|
|
209
323
|
registry.registerComponent('securitySchemes', API_KEY_SCHEME, {
|
|
210
324
|
type: 'apiKey',
|
|
@@ -217,7 +331,7 @@ function generateOpenApiDocument(version, unfolding) {
|
|
|
217
331
|
path: `${exports.ROUTE_PREFIX}/context`,
|
|
218
332
|
operationId: 'getContext',
|
|
219
333
|
summary: 'Read the exposed schema contract',
|
|
220
|
-
security:
|
|
334
|
+
security: SECURITY,
|
|
221
335
|
request: {},
|
|
222
336
|
responses: {
|
|
223
337
|
200: {
|
|
@@ -232,6 +346,8 @@ function generateOpenApiDocument(version, unfolding) {
|
|
|
232
346
|
503: errorRefs.byStatus['503'],
|
|
233
347
|
},
|
|
234
348
|
});
|
|
349
|
+
if (aiErrorRefs)
|
|
350
|
+
registerAiQueryPath(registry, aiErrorRefs);
|
|
235
351
|
if (unfolding) {
|
|
236
352
|
(0, unfolded_paths_1.default)({
|
|
237
353
|
registry,
|
|
@@ -289,4 +405,4 @@ function generateOpenApiDocument(version, unfolding) {
|
|
|
289
405
|
function serializeOpenApi(document) {
|
|
290
406
|
return JSON.stringify(document, null, 2);
|
|
291
407
|
}
|
|
292
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbmFwaS1kb2N1bWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcGVuYXBpL29wZW5hcGktZG9jdW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBNFFBLDBEQXVHQztBQUVELDRDQUVDO0FBcFhELG1FQUFzRjtBQUV0RixzRUFBNkM7QUFDN0MsdUNBV21CO0FBQ25CLHNFQUFxRDtBQUNyRCwrQ0FBa0M7QUFDbEMsb0VBQTRDO0FBRS9CLFFBQUEsZUFBZSxHQUFHLE9BQU8sQ0FBQztBQUMxQixRQUFBLFlBQVksR0FBRyxXQUFXLENBQUM7QUFFeEMsTUFBTSxjQUFjLEdBQUcsWUFBWSxDQUFDO0FBQ3BDLE1BQU0sY0FBYyxHQUFHLFdBQVcsQ0FBQztBQUVuQyxNQUFNLFFBQVEsR0FBRyxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBRTVDLE1BQU0sY0FBYyxHQUEyQjtJQUM3QyxHQUFHLEVBQUUseVFBQXlRO0lBQzlRLEdBQUcsRUFBRSwwQ0FBMEM7SUFDL0MsR0FBRyxFQUFFLDBPQUEwTztJQUMvTyxHQUFHLEVBQUUseUNBQXlDO0lBQzlDLEdBQUcsRUFBRSw2Q0FBNkMsb0JBQVUsRUFBRTtJQUM5RCxHQUFHLEVBQUUsMlZBQTJWO0lBQ2hXLEdBQUcsRUFBRSxrRUFBa0U7SUFDdkUsR0FBRyxFQUFFLG9DQUFvQztJQUN6QyxHQUFHLEVBQUUsK0ZBQStGO0lBQ3BHLEdBQUcsRUFBRSxpRkFBaUY7SUFDdEYsR0FBRyxFQUFFLGdDQUFnQztJQUNyQyxHQUFHLEVBQUUsaUdBQWlHO0NBQ3ZHLENBQUM7QUFFRixNQUFNLDhCQUE4QixHQUNsQyw2RkFBNkY7SUFDN0YsaUVBQWlFLENBQUM7QUFFcEUsTUFBTSxrQkFBa0IsR0FBRyxvQ0FBb0MsQ0FBQztBQUNoRSxNQUFNLDhCQUE4QixHQUFHLCtDQUErQyxDQUFDO0FBRXZGLE1BQU0sbUNBQW1DLEdBQUcseUJB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
|
|
408
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbmFwaS1kb2N1bWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcGVuYXBpL29wZW5hcGktZG9jdW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMFhBLDBEQStHQztBQUVELDRDQUVDO0FBMWVELG1FQUFzRjtBQUV0RixzRUFBNkM7QUFDN0MsdUNBWW1CO0FBQ25CLHNFQUFxRDtBQUNyRCwrQ0FBa0M7QUFDbEMsaUVBQStEO0FBRWxELFFBQUEsZUFBZSxHQUFHLE9BQU8sQ0FBQztBQUMxQixRQUFBLFlBQVksR0FBRyxXQUFXLENBQUM7QUFFeEMsTUFBTSxjQUFjLEdBQUcsWUFBWSxDQUFDO0FBQ3BDLE1BQU0sY0FBYyxHQUFHLFdBQVcsQ0FBQztBQUVuQyxNQUFNLFFBQVEsR0FBRyxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUV0RSxNQUFNLGNBQWMsR0FBMkI7SUFDN0MsR0FBRyxFQUFFLHlRQUF5UTtJQUM5USxHQUFHLEVBQUUsMENBQTBDO0lBQy9DLEdBQUcsRUFBRSwwT0FBME87SUFDL08sR0FBRyxFQUFFLHlDQUF5QztJQUM5QyxHQUFHLEVBQUUsNkNBQTZDLG9CQUFVLEVBQUU7SUFDOUQsR0FBRyxFQUFFLDJWQUEyVjtJQUNoVyxHQUFHLEVBQUUsa0VBQWtFO0lBQ3ZFLEdBQUcsRUFBRSxvQ0FBb0M7SUFDekMsR0FBRyxFQUFFLCtGQUErRjtJQUNwRyxHQUFHLEVBQUUsaUZBQWlGO0lBQ3RGLEdBQUcsRUFBRSxnQ0FBZ0M7SUFDckMsR0FBRyxFQUFFLGlHQUFpRztDQUN2RyxDQUFDO0FBRUYsTUFBTSw4QkFBOEIsR0FDbEMsNkZBQTZGO0lBQzdGLGlFQUFpRSxDQUFDO0FBRXBFLE1BQU0sa0JBQWtCLEdBQUcs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
|
|
@@ -4,8 +4,9 @@ export declare const OPENAPI_PATH = "/agent/openapi.json";
|
|
|
4
4
|
export interface OpenApiRoutesOptions {
|
|
5
5
|
version: string;
|
|
6
6
|
enabled: boolean;
|
|
7
|
+
hasAiQueryRoute: boolean;
|
|
7
8
|
/** Absent (no agent or no read-model configuration) serves the generic document. */
|
|
8
9
|
source?: UnfoldSource;
|
|
9
10
|
}
|
|
10
|
-
export default function createOpenApiRoutes({ version, enabled, source, }: OpenApiRoutesOptions): Middleware;
|
|
11
|
+
export default function createOpenApiRoutes({ version, enabled, source, hasAiQueryRoute, }: OpenApiRoutesOptions): Middleware;
|
|
11
12
|
//# sourceMappingURL=openapi-routes.d.ts.map
|
|
@@ -13,8 +13,10 @@ const bff_local_errors_1 = require("../http/bff-local-errors");
|
|
|
13
13
|
exports.OPENAPI_PATH = '/agent/openapi.json';
|
|
14
14
|
const READ_METHODS = new Set(['GET', 'HEAD']);
|
|
15
15
|
const MAX_GENERATION_RETRIES = 3;
|
|
16
|
-
function createOpenApiRoutes({ version, enabled, source, }) {
|
|
17
|
-
const generic = enabled && !source
|
|
16
|
+
function createOpenApiRoutes({ version, enabled, source, hasAiQueryRoute, }) {
|
|
17
|
+
const generic = enabled && !source
|
|
18
|
+
? (0, openapi_document_1.serializeOpenApi)((0, openapi_document_1.generateOpenApiDocument)(version, { hasAiQueryRoute }))
|
|
19
|
+
: undefined;
|
|
18
20
|
// Memoized on the read-model identity: the store builds a new one per schema generation, so the
|
|
19
21
|
// document is rebuilt exactly when the schema it describes changed.
|
|
20
22
|
let unfolded;
|
|
@@ -30,7 +32,10 @@ function createOpenApiRoutes({ version, enabled, source, }) {
|
|
|
30
32
|
const readModel = await (0, agent_route_helpers_1.resolveReadModel)(source.store);
|
|
31
33
|
if (unfolded?.readModel === readModel)
|
|
32
34
|
return unfolded.document;
|
|
33
|
-
const { document, unfolding } = await (0, unfolded_document_1.default)(source, readModel, token,
|
|
35
|
+
const { document, unfolding } = await (0, unfolded_document_1.default)(source, readModel, token, {
|
|
36
|
+
version,
|
|
37
|
+
hasAiQueryRoute,
|
|
38
|
+
});
|
|
34
39
|
// A schema refresh landing during the capabilities fan-out mixes the new generation's field sets
|
|
35
40
|
// into this generation's collections, relations and actions. Such a document must not be served
|
|
36
41
|
// nor cached — a consumer would generate a client from a self-contradictory schema. Bounded like
|
|
@@ -63,4 +68,4 @@ function createOpenApiRoutes({ version, enabled, source, }) {
|
|
|
63
68
|
ctx.body = document;
|
|
64
69
|
};
|
|
65
70
|
}
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbmFwaS1yb3V0ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvb3BlbmFwaS9vcGVuYXBpLXJvdXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUF3QkEsc0NBMkVDO0FBL0ZELHlEQUErRTtBQUMvRSw0RUFBd0Q7QUFDeEQsMkNBQW9EO0FBQ3BELHFFQUFrRjtBQUNsRiwrREFBMkQ7QUFFOUMsUUFBQSxZQUFZLEdBQUcscUJBQXFCLENBQUM7QUFFbEQsTUFBTSxZQUFZLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUU5QyxNQUFNLHNCQUFzQixHQUFHLENBQUMsQ0FBQztBQVVqQyxTQUF3QixtQkFBbUIsQ0FBQyxFQUMxQyxPQUFPLEVBQ1AsT0FBTyxFQUNQLE1BQU0sRUFDTixlQUFlLEdBQ007SUFDckIsTUFBTSxPQUFPLEdBQ1gsT0FBTyxJQUFJLENBQUMsTUFBTTtRQUNoQixDQUFDLENBQUMsSUFBQSxtQ0FBZ0IsRUFBQyxJQUFBLDBDQUF1QixFQUFDLE9BQU8sRUFBRSxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7UUFDekUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUVoQixnR0FBZ0c7SUFDaEcsb0VBQW9FO0lBQ3BFLElBQUksUUFBZ0UsQ0FBQztJQUVyRSxLQUFLLFVBQVUsZUFBZSxDQUM1QixHQUE4QixFQUM5QixZQUFZLEdBQUcsc0JBQXNCO1FBRXJDLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTyxPQUFpQixDQUFDO1FBRXRDLElBQUksWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMscUVBQXFFLENBQUMsQ0FBQztRQUN6RixDQUFDO1FBRUQsNEZBQTRGO1FBQzVGLHlGQUF5RjtRQUN6RixNQUFNLEtBQUssR0FBRyxJQUFBLHVDQUFpQixFQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBQSxzQ0FBZ0IsRUFBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFdkQsSUFBSSxRQUFRLEVBQUUsU0FBUyxLQUFLLFNBQVM7WUFBRSxPQUFPLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFFaEUsTUFBTSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsR0FBRyxNQUFNLElBQUEsMkJBQXFCLEVBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUU7WUFDcEYsT0FBTztZQUNQLGVBQWU7U0FDaEIsQ0FBQyxDQUFDO1FBRUgsaUdBQWlHO1FBQ2pHLGdHQUFnRztRQUNoRyxpR0FBaUc7UUFDakcsaUdBQWlHO1FBQ2pHLElBQUksQ0FBQyxNQUFNLElBQUEsc0NBQWdCLEVBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDekQsT0FBTyxlQUFlLENBQUMsR0FBRyxFQUFFLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNoRCxDQUFDO1FBRUQsZ0dBQWdHO1FBQ2hHLDZGQUE2RjtRQUM3RiwrRkFBK0Y7UUFDL0YsNkZBQTZGO1FBQzdGLG1GQUFtRjtRQUNuRixJQUFJLENBQUMsSUFBQSxpQ0FBcUIsRUFBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ3RDLFFBQVEsR0FBRyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsQ0FBQztRQUNyQyxDQUFDO1FBRUQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVELE9BQU8sS0FBSyxVQUFVLGFBQWEsQ0FBQyxHQUFHLEVBQUUsSUFBSTtRQUMzQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssb0JBQVksSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDL0QsTUFBTSxJQUFJLEVBQUUsQ0FBQztZQUViLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsTUFBTSxJQUFBLGtDQUFlLEdBQUUsQ0FBQztRQUMxQixDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFNUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7UUFDakIsR0FBRyxDQUFDLElBQUksR0FBRyxrQkFBa0IsQ0FBQztRQUM5QixHQUFHLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNyQyxHQUFHLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztJQUN0QixDQUFDLENBQUM7QUFDSixDQUFDIn0=
|
|
@@ -13,6 +13,8 @@ export declare const PageSchema: z.ZodObject<{
|
|
|
13
13
|
offset: z.ZodNumber;
|
|
14
14
|
}, z.core.$strip>;
|
|
15
15
|
export declare const TimezoneSchema: z.ZodString;
|
|
16
|
+
export declare const SearchSchema: z.ZodString;
|
|
17
|
+
export declare const SearchExtendedSchema: z.ZodBoolean;
|
|
16
18
|
export declare const ListRequestSchema: z.ZodObject<{
|
|
17
19
|
filter: z.ZodOptional<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>;
|
|
18
20
|
projection: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
@@ -27,10 +29,14 @@ export declare const ListRequestSchema: z.ZodObject<{
|
|
|
27
29
|
limit: z.ZodNumber;
|
|
28
30
|
offset: z.ZodNumber;
|
|
29
31
|
}, z.core.$strip>>;
|
|
32
|
+
search: z.ZodOptional<z.ZodString>;
|
|
33
|
+
searchExtended: z.ZodOptional<z.ZodBoolean>;
|
|
30
34
|
timezone: z.ZodOptional<z.ZodString>;
|
|
31
35
|
}, z.core.$strip>;
|
|
32
36
|
export declare const CountRequestSchema: z.ZodObject<{
|
|
33
37
|
filter: z.ZodOptional<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>;
|
|
38
|
+
search: z.ZodOptional<z.ZodString>;
|
|
39
|
+
searchExtended: z.ZodOptional<z.ZodBoolean>;
|
|
34
40
|
timezone: z.ZodOptional<z.ZodString>;
|
|
35
41
|
}, z.core.$strip>;
|
|
36
42
|
declare const ParentIdSchema: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
|
|
@@ -48,11 +54,15 @@ export declare const RelationListRequestSchema: z.ZodObject<{
|
|
|
48
54
|
limit: z.ZodNumber;
|
|
49
55
|
offset: z.ZodNumber;
|
|
50
56
|
}, z.core.$strip>>;
|
|
57
|
+
search: z.ZodOptional<z.ZodString>;
|
|
58
|
+
searchExtended: z.ZodOptional<z.ZodBoolean>;
|
|
51
59
|
timezone: z.ZodOptional<z.ZodString>;
|
|
52
60
|
parentId: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
|
|
53
61
|
}, z.core.$strip>;
|
|
54
62
|
export declare const RelationCountRequestSchema: z.ZodObject<{
|
|
55
63
|
filter: z.ZodOptional<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>;
|
|
64
|
+
search: z.ZodOptional<z.ZodString>;
|
|
65
|
+
searchExtended: z.ZodOptional<z.ZodBoolean>;
|
|
56
66
|
timezone: z.ZodOptional<z.ZodString>;
|
|
57
67
|
parentId: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
|
|
58
68
|
}, z.core.$strip>;
|
|
@@ -125,6 +135,7 @@ export declare const ContextResponseSchema: z.ZodObject<{
|
|
|
125
135
|
environmentId: z.ZodOptional<z.ZodNumber>;
|
|
126
136
|
}, z.core.$strip>;
|
|
127
137
|
}, z.core.$strip>;
|
|
138
|
+
export declare const AiQueryRequestSchema: z.ZodUnknown;
|
|
128
139
|
export declare const ErrorResponseSchema: z.ZodObject<{
|
|
129
140
|
error: z.ZodObject<{
|
|
130
141
|
type: z.ZodString;
|