@forestadmin/agent-bff 1.30.2 → 1.32.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.
Files changed (42) hide show
  1. package/README.md +28 -5
  2. package/dist/action/action-routes-middleware.d.ts +3 -1
  3. package/dist/action/action-routes-middleware.js +48 -13
  4. package/dist/activity-log/activity-log-drainer.d.ts +24 -0
  5. package/dist/activity-log/activity-log-drainer.js +63 -0
  6. package/dist/activity-log/activity-log-writer.d.ts +26 -0
  7. package/dist/activity-log/activity-log-writer.js +23 -0
  8. package/dist/activity-log/activity-logs-creator.d.ts +42 -0
  9. package/dist/activity-log/activity-logs-creator.js +209 -0
  10. package/dist/activity-log/activity-logs-service.d.ts +18 -0
  11. package/dist/activity-log/activity-logs-service.js +19 -0
  12. package/dist/activity-log/with-activity-log.d.ts +25 -0
  13. package/dist/activity-log/with-activity-log.js +63 -0
  14. package/dist/api-key/api-key-authenticator.d.ts +11 -0
  15. package/dist/api-key/api-key-authenticator.js +12 -2
  16. package/dist/api-key/api-key-client.d.ts +6 -0
  17. package/dist/api-key/api-key-client.js +2 -1
  18. package/dist/api-key/api-key-middleware.d.ts +10 -1
  19. package/dist/api-key/api-key-middleware.js +18 -1
  20. package/dist/api-key/resolve-cache.d.ts +12 -0
  21. package/dist/api-key/resolve-cache.js +38 -6
  22. package/dist/auth/auth-mode.d.ts +1 -0
  23. package/dist/auth/auth-mode.js +10 -3
  24. package/dist/auth/forest-server-token-middleware.d.ts +25 -0
  25. package/dist/auth/forest-server-token-middleware.js +90 -0
  26. package/dist/build-bff.d.ts +8 -0
  27. package/dist/build-bff.js +29 -10
  28. package/dist/cli-core.d.ts +9 -0
  29. package/dist/cli-core.js +38 -3
  30. package/dist/cors/origin.d.ts +1 -0
  31. package/dist/cors/origin.js +57 -6
  32. package/dist/cors/per-key-origin.js +5 -4
  33. package/dist/data/agent-query.d.ts +12 -0
  34. package/dist/data/agent-query.js +19 -1
  35. package/dist/data/data-routes-middleware.d.ts +3 -1
  36. package/dist/data/data-routes-middleware.js +41 -4
  37. package/dist/http/bff-http-server.d.ts +22 -0
  38. package/dist/http/bff-http-server.js +50 -5
  39. package/dist/http/bff-local-errors.d.ts +15 -0
  40. package/dist/http/bff-local-errors.js +29 -3
  41. package/dist/openapi/openapi-document.js +3 -3
  42. package/package.json +1 -1
@@ -62,7 +62,14 @@ async function resolveOwnCapabilities(deps) {
62
62
  assertStillAllowed(result.readModel);
63
63
  return result;
64
64
  }
65
- async function handleList(ctx, body, deps) {
65
+ function selectListAction(body) {
66
+ if ((0, agent_query_1.hasSearch)(body))
67
+ return 'search';
68
+ if ((0, agent_query_1.hasFilter)(body))
69
+ return 'filter';
70
+ return 'index';
71
+ }
72
+ async function listRecords(ctx, body, deps) {
66
73
  (0, relation_field_guard_1.default)((0, agent_query_1.collectListFieldPaths)(body));
67
74
  const validationInput = toValidationInput(body);
68
75
  // The store hands back the read-model the capabilities belong to; using it keeps the primary keys
@@ -79,6 +86,14 @@ async function handleList(ctx, body, deps) {
79
86
  ctx.status = 200;
80
87
  ctx.body = (0, response_mappers_1.mapListResponse)(deps.collection, records, primaryKeys);
81
88
  }
89
+ async function handleList(ctx, body, deps) {
90
+ await deps.activityLogs.record({
91
+ ctx,
92
+ action: selectListAction(body),
93
+ context: { collectionName: deps.collection },
94
+ operation: () => listRecords(ctx, body, deps),
95
+ });
96
+ }
82
97
  async function handleCount(ctx, body, deps) {
83
98
  (0, relation_field_guard_1.default)((0, agent_query_1.collectCountFieldPaths)(body));
84
99
  // Count carries only a filter (no sort/projection), so that is all there is to validate.
@@ -106,7 +121,16 @@ async function resolveExposedRelationCapabilities(deps) {
106
121
  assertStillExposed(result.readModel);
107
122
  return result;
108
123
  }
109
- async function handleRelationList(ctx, body, deps) {
124
+ function relationListLabel(relation, body) {
125
+ const refinements = [];
126
+ if ((0, agent_query_1.hasSearch)(body))
127
+ refinements.push('search');
128
+ if ((0, agent_query_1.hasFilter)(body))
129
+ refinements.push('filter');
130
+ const suffix = refinements.length > 0 ? ` with ${refinements.join(' and ')}` : '';
131
+ return `list relation "${relation}"${suffix}`;
132
+ }
133
+ async function listRelatedRecords(ctx, body, deps) {
110
134
  (0, relation_field_guard_1.default)((0, agent_query_1.collectListFieldPaths)(body));
111
135
  const validationInput = toValidationInput(body);
112
136
  let { primaryKeys } = deps;
@@ -120,6 +144,18 @@ async function handleRelationList(ctx, body, deps) {
120
144
  ctx.status = 200;
121
145
  ctx.body = (0, response_mappers_1.mapListResponse)(deps.foreignCollection, records, primaryKeys);
122
146
  }
147
+ async function handleRelationList(ctx, body, deps) {
148
+ await deps.activityLogs.record({
149
+ ctx,
150
+ action: 'listRelatedData',
151
+ context: {
152
+ collectionName: deps.collection,
153
+ recordId: body.parentId,
154
+ label: relationListLabel(deps.relation, body),
155
+ },
156
+ operation: () => listRelatedRecords(ctx, body, deps),
157
+ });
158
+ }
123
159
  async function handleRelationCount(ctx, body, deps) {
124
160
  (0, relation_field_guard_1.default)((0, agent_query_1.collectCountFieldPaths)(body));
125
161
  if (body.filter !== undefined) {
@@ -159,7 +195,7 @@ async function handleRelation(ctx, rawBody, match, { deps, readModel }) {
159
195
  await handleRelationCount(ctx, (0, agent_query_1.parseRelationCountRequest)(rawBody, deps.logger), relationDeps);
160
196
  }
161
197
  }
162
- function createDataRoutesMiddleware({ store, transport, logger, createClient = agent_data_client_1.default, }) {
198
+ function createDataRoutesMiddleware({ store, transport, logger, activityLogs, createClient = agent_data_client_1.default, }) {
163
199
  return async function dataRoutesMiddleware(ctx, next) {
164
200
  const dataMatch = DATA_ROUTE.exec(ctx.path);
165
201
  const relationMatch = dataMatch ? null : RELATION_ROUTE.exec(ctx.path);
@@ -186,6 +222,7 @@ function createDataRoutesMiddleware({ store, transport, logger, createClient = a
186
222
  token,
187
223
  timezone: ctx.state.timezone,
188
224
  logger,
225
+ activityLogs,
189
226
  };
190
227
  const rawBody = ctx.request.body ?? {};
191
228
  if (relationMatch) {
@@ -203,4 +240,4 @@ function createDataRoutesMiddleware({ store, transport, logger, createClient = a
203
240
  }
204
241
  };
205
242
  }
206
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1yb3V0ZXMtbWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhL2RhdGEtcm91dGVzLW1pZGRsZXdhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFrVEEsNkNBd0RDO0FBM1ZELDRFQUErRDtBQUMvRCwrQ0FTdUI7QUFDdkIseURBQXVFO0FBQ3ZFLHFFQUtxQztBQUNyQywrREFBOEU7QUFDOUUsMEdBQXNGO0FBQ3RGLGlGQUc4QztBQUM5Qyw4RkFBNEU7QUFFNUUsTUFBTSxVQUFVLEdBQUcsc0NBQXNDLENBQUM7QUFDMUQsTUFBTSxjQUFjLEdBQUcsMERBQTBELENBQUM7QUFxQmxGLG1HQUFtRztBQUNuRyxrR0FBa0c7QUFDbEcscUdBQXFHO0FBQ3JHLDJGQUEyRjtBQUMzRixTQUFTLDRCQUE0QixDQUFDLFNBQW9CLEVBQUUsVUFBa0I7SUFDNUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUM7UUFBRSxNQUFNLElBQUEsb0NBQWlCLEdBQUUsQ0FBQztBQUM1RSxDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxJQUErQztJQUN4RSxPQUFPO1FBQ0wsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1FBQ25CLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDbEQsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFVBQVU7S0FDbEMsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLG1CQUFtQixDQUMxQixJQUF3QixFQUN4QixVQUFrQjtJQUVsQixPQUFPLElBQUEsK0JBQVMsRUFDZCxHQUFHLEVBQUUsQ0FDSCxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FDeEIsVUFBVSxFQUNWLElBQUEsb0NBQThCLEVBQUM7UUFDN0IsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1FBQ3pC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
243
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1yb3V0ZXMtbWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhL2RhdGEtcm91dGVzLW1pZGRsZXdhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFvV0EsNkNBMERDO0FBN1lELDRFQUErRDtBQUMvRCwrQ0FXdUI7QUFDdkIseURBQXVFO0FBQ3ZFLHFFQUtxQztBQUNyQywrREFBOEU7QUFDOUUsMEdBQXNGO0FBQ3RGLGlGQUc4QztBQUM5Qyw4RkFBNEU7QUFFNUUsTUFBTSxVQUFVLEdBQUcsc0NBQXNDLENBQUM7QUFDMUQsTUFBTSxjQUFjLEdBQUcsMERBQTBELENBQUM7QUF1QmxGLG1HQUFtRztBQUNuRyxrR0FBa0c7QUFDbEcscUdBQXFHO0FBQ3JHLDJGQUEyRjtBQUMzRixTQUFTLDRCQUE0QixDQUFDLFNBQW9CLEVBQUUsVUFBa0I7SUFDNUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUM7UUFBRSxNQUFNLElBQUEsb0NBQWlCLEdBQUUsQ0FBQztBQUM1RSxDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxJQUErQztJQUN4RSxPQUFPO1FBQ0wsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1FBQ25CLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDbEQsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFVBQVU7S0FDbEMsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLG1CQUFtQixDQUMxQixJQUF3QixFQUN4QixVQUFrQjtJQUVsQixPQUFPLElBQUEsK0JBQVMsRUFDZCxHQUFHLEVBQUUsQ0FDSCxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FDeEIsVUFBVSxFQUNWLElBQUEsb0NBQThCLEVBQUM7UUFDN0IsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1FBQ3pC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
@@ -2,10 +2,20 @@ import type { BffCallback } from '../build-bff';
2
2
  import type { BFFConfig } from '../config/env-config';
3
3
  import type { Logger } from '../ports/logger-port';
4
4
  import type { Middleware } from 'koa';
5
+ /** How long `stop()` waits for the open connections before it destroys them and drains anyway. */
6
+ export declare const SHUTDOWN_TIMEOUT_MS = 10000;
5
7
  interface BFFHttpServerBaseOptions {
6
8
  port: number;
7
9
  config: BFFConfig;
8
10
  logger?: Logger;
11
+ /** Overrides `SHUTDOWN_TIMEOUT_MS`, for a host whose orchestrator grants a different grace. */
12
+ shutdownTimeoutMs?: number;
13
+ /**
14
+ * Waits for the work no connection holds: the activity-log status transitions are fired without
15
+ * `await`, so `close()` does not cover them and a shutdown would leave entries `pending`. Takes
16
+ * what is left of the shutdown deadline and returns what that deadline cut short.
17
+ */
18
+ drainActivityLogs?: (timeoutMs?: number) => Promise<string[]>;
9
19
  }
10
20
  /** The server assembles its own Koa app around `/health` and the version header. */
11
21
  interface AssembledOptions extends BFFHttpServerBaseOptions {
@@ -32,7 +42,19 @@ export default class BFFHttpServer {
32
42
  constructor(options: BFFHttpServerOptions);
33
43
  private static buildHandler;
34
44
  start(): Promise<void>;
45
+ /**
46
+ * The drain shares the connection deadline rather than getting one of its own: `stop()` as a
47
+ * whole has to fit the grace the orchestrator gives the process, and a status transition against
48
+ * a slow audit store retries long enough to outlast it on its own.
49
+ */
35
50
  stop(): Promise<void>;
51
+ private get shutdownTimeoutMs();
52
+ /**
53
+ * Bounded on purpose: `close()` resolves only once the last connection is gone, so a single busy
54
+ * one would hold the shutdown until the orchestrator sends SIGKILL and the drain would never
55
+ * run. Idle keep-alive connections go first, the rest get the deadline and are then destroyed.
56
+ */
57
+ private closeConnections;
36
58
  get callback(): BffCallback;
37
59
  }
38
60
  export {};
@@ -3,12 +3,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SHUTDOWN_TIMEOUT_MS = void 0;
6
7
  const http_1 = __importDefault(require("http"));
7
8
  const koa_1 = __importDefault(require("koa"));
8
9
  const health_route_1 = __importDefault(require("./health-route"));
9
10
  const version_header_middleware_1 = __importDefault(require("./version-header-middleware"));
10
11
  const console_logger_1 = __importDefault(require("../adapters/console-logger"));
11
12
  const missing_config_warning_1 = __importDefault(require("../config/missing-config-warning"));
13
+ /** How long `stop()` waits for the open connections before it destroys them and drains anyway. */
14
+ exports.SHUTDOWN_TIMEOUT_MS = 10000;
12
15
  function isPrebuilt(options) {
13
16
  return options.callback !== undefined;
14
17
  }
@@ -67,13 +70,54 @@ class BFFHttpServer {
67
70
  server.listen(this.options.port, onListening);
68
71
  });
69
72
  }
73
+ /**
74
+ * The drain shares the connection deadline rather than getting one of its own: `stop()` as a
75
+ * whole has to fit the grace the orchestrator gives the process, and a status transition against
76
+ * a slow audit store retries long enough to outlast it on its own.
77
+ */
70
78
  async stop() {
79
+ const { drainActivityLogs } = this.options;
80
+ const timeoutMs = this.shutdownTimeoutMs;
81
+ const deadline = Date.now() + timeoutMs;
82
+ await this.closeConnections(timeoutMs);
83
+ if (!drainActivityLogs)
84
+ return;
85
+ const unfinished = await drainActivityLogs(Math.max(deadline - Date.now(), 0));
86
+ if (unfinished.length === 0)
87
+ return;
88
+ this.logger('Warn', 'Stopped the Forest BFF with activity logs still in flight', {
89
+ timeoutMs,
90
+ unfinished,
91
+ });
92
+ }
93
+ get shutdownTimeoutMs() {
94
+ return this.options.shutdownTimeoutMs ?? exports.SHUTDOWN_TIMEOUT_MS;
95
+ }
96
+ /**
97
+ * Bounded on purpose: `close()` resolves only once the last connection is gone, so a single busy
98
+ * one would hold the shutdown until the orchestrator sends SIGKILL and the drain would never
99
+ * run. Idle keep-alive connections go first, the rest get the deadline and are then destroyed.
100
+ */
101
+ async closeConnections(timeoutMs) {
102
+ const { server } = this;
103
+ if (!server)
104
+ return;
71
105
  return new Promise((resolve, reject) => {
72
- if (!this.server) {
106
+ let settled = false;
107
+ const timer = setTimeout(() => {
108
+ settled = true;
109
+ this.logger('Warn', 'Forcing the Forest BFF shutdown: connections were still open', {
110
+ timeoutMs,
111
+ });
112
+ server.closeAllConnections();
113
+ this.server = null;
73
114
  resolve();
74
- return;
75
- }
76
- this.server.close(err => {
115
+ }, timeoutMs);
116
+ server.close(err => {
117
+ if (settled)
118
+ return;
119
+ settled = true;
120
+ clearTimeout(timer);
77
121
  if (err) {
78
122
  reject(err);
79
123
  }
@@ -82,6 +126,7 @@ class BFFHttpServer {
82
126
  resolve();
83
127
  }
84
128
  });
129
+ server.closeIdleConnections();
85
130
  });
86
131
  }
87
132
  get callback() {
@@ -89,4 +134,4 @@ class BFFHttpServer {
89
134
  }
90
135
  }
91
136
  exports.default = BFFHttpServer;
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmZmLWh0dHAtc2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2h0dHAvYmZmLWh0dHAtc2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBTUEsZ0RBQXdCO0FBQ3hCLDhDQUFzQjtBQUV0QixrRUFBK0M7QUFDL0MsNEZBQXdFO0FBQ3hFLGdGQUE2RDtBQUM3RCw4RkFBaUU7QUE0QmpFLFNBQVMsVUFBVSxDQUFDLE9BQTZCO0lBQy9DLE9BQU8sT0FBTyxDQUFDLFFBQVEsS0FBSyxTQUFTLENBQUM7QUFDeEMsQ0FBQztBQUVELE1BQXFCLGFBQWE7SUFNaEMsWUFBWSxPQUE2QjtRQUZqQyxXQUFNLEdBQWtCLElBQUksQ0FBQztRQUduQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLElBQUksSUFBQSx3QkFBbUIsR0FBRSxDQUFDO1FBRXRELElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDO1lBRWhDLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxhQUFhLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25ELElBQUEsZ0NBQWlCLEVBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVPLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBeUI7UUFDbkQsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFDcEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxhQUFHLEVBQUUsQ0FBQztRQUV0QixHQUFHLENBQUMsR0FBRyxDQUFDLElBQUEsbUNBQTZCLEVBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNoRCxHQUFHLENBQUMsR0FBRyxDQUNMLElBQUEsc0JBQWlCLEVBQUM7WUFDaEIsT0FBTztZQUNQLE9BQU8sRUFBRSxNQUFNLENBQUMsY0FBYztZQUM5QixVQUFVLEVBQUU7Z0JBQ1YsS0FBSyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUM7Z0JBQ3pDLEVBQUUsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDO2dCQUN0QyxJQUFJLEVBQUUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQztnQkFDdEMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxjQUFjO2FBQy9CO1NBQ0YsQ0FBQyxDQUNILENBQUM7UUFFRixLQUFLLE1BQU0sVUFBVSxJQUFJLE9BQU8sQ0FBQyxXQUFXLElBQUksRUFBRSxFQUFFLENBQUM7WUFDbkQsR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN0QixDQUFDO1FBRUQsT0FBTyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELEtBQUssQ0FBQyxLQUFLO1FBQ1QsSUFBSSxJQUFJLENBQUMsTUFBTTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUUzRCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLE1BQU0sTUFBTSxHQUFHLGNBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQy9DLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1lBQ3JCLElBQUksT0FBK0IsQ0FBQztZQUVwQyxNQUFNLFdBQVcsR0FBRyxHQUFHLEVBQUU7Z0JBQ3ZCLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUN4QyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2pDLE1BQU0sSUFBSSxHQUFHLE9BQU8sT0FBTyxLQUFLLFFBQVEsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUN2RixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxvQkFBb0IsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBRXBELE9BQU8sRUFBRSxDQUFDO1lBQ1osQ0FBQyxDQUFDO1lBRUYsT0FBTyxHQUFHLENBQUMsS0FBWSxFQUFFLEVBQUU7Z0JBQ3pCLE1BQU0sQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDO2dCQUNoRCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssTUFBTTtvQkFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDL0MsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hCLENBQUMsQ0FBQztZQUVGLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzlCLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUk7UUFDUixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2pCLE9BQU8sRUFBRSxDQUFDO2dCQUVWLE9BQU87WUFDVCxDQUFDO1lBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ3RCLElBQUksR0FBRyxFQUFFLENBQUM7b0JBQ1IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNkLENBQUM7cUJBQU0sQ0FBQztvQkFDTixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztvQkFDbkIsT0FBTyxFQUFFLENBQUM7Z0JBQ1osQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7Q0FDRjtBQS9GRCxnQ0ErRkMifQ==
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmZmLWh0dHAtc2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2h0dHAvYmZmLWh0dHAtc2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQU1BLGdEQUF3QjtBQUN4Qiw4Q0FBc0I7QUFFdEIsa0VBQStDO0FBQy9DLDRGQUF3RTtBQUN4RSxnRkFBNkQ7QUFDN0QsOEZBQWlFO0FBRWpFLGtHQUFrRztBQUNyRixRQUFBLG1CQUFtQixHQUFHLEtBQU0sQ0FBQztBQW9DMUMsU0FBUyxVQUFVLENBQUMsT0FBNkI7SUFDL0MsT0FBTyxPQUFPLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQztBQUN4QyxDQUFDO0FBRUQsTUFBcUIsYUFBYTtJQU1oQyxZQUFZLE9BQTZCO1FBRmpDLFdBQU0sR0FBa0IsSUFBSSxDQUFDO1FBR25DLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sSUFBSSxJQUFBLHdCQUFtQixHQUFFLENBQUM7UUFFdEQsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7WUFFaEMsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsT0FBTyxHQUFHLGFBQWEsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkQsSUFBQSxnQ0FBaUIsRUFBQyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRU8sTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUF5QjtRQUNuRCxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUNwQyxNQUFNLEdBQUcsR0FBRyxJQUFJLGFBQUcsRUFBRSxDQUFDO1FBRXRCLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFB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
@@ -24,6 +24,21 @@ export declare const RATE_LIMIT_CAUSES: {
24
24
  };
25
25
  export type RateLimitCause = (typeof RATE_LIMIT_CAUSES)[keyof typeof RATE_LIMIT_CAUSES];
26
26
  export declare function tooManyRequests(retryAfter: number, message: string, cause: RateLimitCause): BffHttpError;
27
+ export declare const ACTION_REQUIRES_APPROVAL_TYPE = "action_requires_approval";
27
28
  export declare function actionRequiresApproval(message?: string, details?: unknown): BffHttpError;
29
+ export declare const AUDIT_RETRY_AFTER_SECONDS = 5;
30
+ export declare const AUDIT_UNAVAILABLE_TYPE = "audit_unavailable";
31
+ /**
32
+ * `retryAfter` is optional: a retry only helps while the audit store is expected to answer soon.
33
+ * A deployment whose Forest server cannot write the log at all must not advertise one.
34
+ */
35
+ export declare function auditUnavailable(retryAfter?: number, message?: string): BffHttpError;
36
+ /**
37
+ * The audit trail cannot be written in this deployment at all — no credential minted, no endpoint
38
+ * exposed — as opposed to an outage that a retry outlives. The missing `retryAfter` is the marker:
39
+ * it is what the callers above use to say a retry can never succeed.
40
+ */
41
+ export declare function isUnretryableAuditFailure(error: unknown): boolean;
42
+ export declare function auditNotAuthorized(message?: string): BffHttpError;
28
43
  export declare function environmentUnresolved(): BffHttpError;
29
44
  //# sourceMappingURL=bff-local-errors.d.ts.map
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RATE_LIMIT_CAUSES = void 0;
3
+ exports.AUDIT_UNAVAILABLE_TYPE = exports.AUDIT_RETRY_AFTER_SECONDS = exports.ACTION_REQUIRES_APPROVAL_TYPE = exports.RATE_LIMIT_CAUSES = void 0;
4
4
  exports.unknownCollection = unknownCollection;
5
5
  exports.unknownRelation = unknownRelation;
6
6
  exports.unknownAction = unknownAction;
@@ -22,6 +22,9 @@ exports.upstreamTimeout = upstreamTimeout;
22
22
  exports.permissionsUnavailable = permissionsUnavailable;
23
23
  exports.tooManyRequests = tooManyRequests;
24
24
  exports.actionRequiresApproval = actionRequiresApproval;
25
+ exports.auditUnavailable = auditUnavailable;
26
+ exports.isUnretryableAuditFailure = isUnretryableAuditFailure;
27
+ exports.auditNotAuthorized = auditNotAuthorized;
25
28
  exports.environmentUnresolved = environmentUnresolved;
26
29
  const bff_http_error_1 = require("./bff-http-error");
27
30
  function unknownCollection(message = 'Unknown collection') {
@@ -93,10 +96,33 @@ function tooManyRequests(retryAfter, message, cause) {
93
96
  retryAfter,
94
97
  });
95
98
  }
99
+ exports.ACTION_REQUIRES_APPROVAL_TYPE = 'action_requires_approval';
96
100
  function actionRequiresApproval(message = 'This action requires an approval before it can run', details) {
97
- return new bff_http_error_1.BffHttpError(403, 'action_requires_approval', message, { details });
101
+ return new bff_http_error_1.BffHttpError(403, exports.ACTION_REQUIRES_APPROVAL_TYPE, message, { details });
102
+ }
103
+ exports.AUDIT_RETRY_AFTER_SECONDS = 5;
104
+ exports.AUDIT_UNAVAILABLE_TYPE = 'audit_unavailable';
105
+ /**
106
+ * `retryAfter` is optional: a retry only helps while the audit store is expected to answer soon.
107
+ * A deployment whose Forest server cannot write the log at all must not advertise one.
108
+ */
109
+ function auditUnavailable(retryAfter, message = 'The activity log could not be written, so the operation was not performed') {
110
+ return new bff_http_error_1.BffHttpError(503, exports.AUDIT_UNAVAILABLE_TYPE, message, { retryAfter });
111
+ }
112
+ /**
113
+ * The audit trail cannot be written in this deployment at all — no credential minted, no endpoint
114
+ * exposed — as opposed to an outage that a retry outlives. The missing `retryAfter` is the marker:
115
+ * it is what the callers above use to say a retry can never succeed.
116
+ */
117
+ function isUnretryableAuditFailure(error) {
118
+ return (error instanceof bff_http_error_1.BffHttpError &&
119
+ error.type === exports.AUDIT_UNAVAILABLE_TYPE &&
120
+ error.retryAfter === undefined);
121
+ }
122
+ function auditNotAuthorized(message = 'Not authorized to write the activity log for this request') {
123
+ return new bff_http_error_1.BffHttpError(403, 'audit_not_authorized', message);
98
124
  }
99
125
  function environmentUnresolved() {
100
126
  return new bff_http_error_1.BffHttpError(502, 'environment_unresolved', 'The Forest environment could not be resolved');
101
127
  }
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmZmLWxvY2FsLWVycm9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9odHRwL2JmZi1sb2NhbC1lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsOENBRUM7QUFFRCwwQ0FFQztBQUVELHNDQUVDO0FBRUQsb0RBRUM7QUFFRCxnREFFQztBQUVELDRDQUVDO0FBRUQsd0NBRUM7QUFFRCxvQ0FFQztBQUVELDhDQUVDO0FBRUQsMERBRUM7QUFFRCxvREFJQztBQUVELGtDQUVDO0FBRUQsMENBRUM7QUFFRCw0REFFQztBQUVELHNDQUVDO0FBSUQsc0NBUUM7QUFFRCxrREFFQztBQUVELDBDQUVDO0FBRUQsd0RBS0M7QUFTRCwwQ0FTQztBQUVELHdEQUtDO0FBRUQsc0RBTUM7QUExSEQscURBQWdEO0FBRWhELFNBQWdCLGlCQUFpQixDQUFDLE9BQU8sR0FBRyxvQkFBb0I7SUFDOUQsT0FBTyxJQUFJLDZCQUFZLENBQUMsR0FBRyxFQUFFLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzlELENBQUM7QUFFRCxTQUFnQixlQUFlLENBQUMsT0FBTyxHQUFHLGtCQUFrQjtJQUMxRCxPQUFPLElBQUksNkJBQVksQ0FBQyxHQUFHLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDNUQsQ0FBQztBQUVELFNBQWdCLGFBQWEsQ0FBQyxPQUFPLEdBQUcsZ0JBQWdCO0lBQ3RELE9BQU8sSUFBSSw2QkFBWSxDQUFDLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUMxRCxDQUFDO0FBRUQsU0FBZ0Isb0JBQW9CLENBQUMsT0FBTyxHQUFHLDJCQUEyQjtJQUN4RSxPQUFPLElBQUksNkJBQVksQ0FBQyxHQUFHLEVBQUUsd0JBQXdCLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDbEUsQ0FBQztBQUVELFNBQWdCLGtCQUFrQixDQUFDLE9BQU8sR0FBRyx5QkFBeUI7SUFDcEUsT0FBTyxJQUFJ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
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmZmLWxvY2FsLWVycm9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9odHRwL2JmZi1sb2NhbC1lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsOENBRUM7QUFFRCwwQ0FFQztBQUVELHNDQUVDO0FBRUQsb0RBRUM7QUFFRCxnREFFQztBQUVELDRDQUVDO0FBRUQsd0NBRUM7QUFFRCxvQ0FFQztBQUVELDhDQUVDO0FBRUQsMERBRUM7QUFFRCxvREFJQztBQUVELGtDQUVDO0FBRUQsMENBRUM7QUFFRCw0REFFQztBQUVELHNDQUVDO0FBSUQsc0NBUUM7QUFFRCxrREFFQztBQUVELDBDQUVDO0FBRUQsd0RBS0M7QUFTRCwwQ0FTQztBQUlELHdEQUtDO0FBVUQsNENBS0M7QUFPRCw4REFNQztBQUVELGdEQUlDO0FBRUQsc0RBTUM7QUE5SkQscURBQWdEO0FBRWhELFNBQWdCLGlCQUFpQixDQUFDLE9BQU8sR0FBRyxvQkFBb0I7SUFDOUQsT0FBTyxJQUFJLDZCQUFZLENBQUMsR0FBRyxFQUFFLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzlELENBQUM7QUFFRCxTQUFnQixlQUFlLENBQUMsT0FBTyxHQUFHLGtCQUFrQjtJQUMxRCxPQUFPLElBQUksNkJBQVksQ0FBQyxHQUFHLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDNUQsQ0FBQztBQUVELFNBQWdCLGFBQWEsQ0FBQyxPQUFPLEdBQUcsZ0JBQWdCO0lBQ3RELE9BQU8sSUFBSSw2QkFBWSxDQUFDLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUMxRCxDQUFDO0FBRUQsU0FBZ0Isb0JBQW9CLENBQUMsT0FBTyxHQUFHLDJCQUEyQjtJQUN4RSxPQUFPLElBQUksNkJBQVksQ0FBQyxHQUFHLEVBQUUsd0JBQXdCLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDbEUsQ0FBQztBQUVELFNBQWdCLGtCQUFrQixDQUFDLE9BQU8sR0FBRyx5QkFBeUI7SUFDcEUsT0FBTyxJQUFJLDZCQUFZLENBQUMsR0FBRyxFQUFFLHNCQUFzQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2hFLENBQUM7QUFFRCxTQUFnQixnQkFBZ0IsQ0FBQyxPQUFPLEdBQUcsdUJBQXVCO0lBQ2hFLE9BQU8sSUFBSSw2QkFBWSxDQUFDLEdBQUcsRUFBRSxvQkFBb0IsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUM5RCxDQUFDO0FBRUQsU0FBZ0IsY0FBYyxDQUFDLE9BQU8sR0FBRyxpQkFBaUIsRUFBRSxPQUFpQjtJQUMzRSxPQUFPLElBQUksNkJBQVksQ0FBQyxHQUFHLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztBQUN4RSxDQUFDO0FBRUQsU0FBZ0IsWUFBWSxDQUFDLE9BQU8sR0FBRyxrQ0FBa0M7SUFDdkUsT0FBTyxJQUFJLDZCQUFZLENBQUMsR0FBRyxFQUFFLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUN6RCxDQUFDO0FBRUQsU0FBZ0IsaUJBQWlCLENBQUMsT0FBTyxHQUFHLGlDQUFpQztJQUMzRSxPQUFPLElBQUksNkJBQVksQ0FBQyxHQUFHLEVBQUUsb0JBQW9CLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDOUQsQ0FBQztBQUVELFNBQWdCLHVCQUF1QixDQUFDLE9BQU8sR0FBRywyQkFBMkI7SUFDM0UsT0FBTyxJQUFJLDZCQUFZLENBQUMsR0FBRyxFQUFFLDJCQUEyQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3JFLENBQUM7QUFFRCxTQUFnQixvQkFBb0IsQ0FDbEMsT0FBTyxHQUFHLGdEQUFnRDtJQUUxRCxPQUFPLElBQUksNkJBQVksQ0FBQyxHQUFHLEVBQUUsdUJBQXVCLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDakUsQ0FBQztBQUVELFNBQWdCLFdBQVcsQ0FBQyxPQUFPLEdBQUcsbUJBQW1CLEVBQUUsT0FBaUI7SUFDMUUsT0FBTyxJQUFJLDZCQUFZLENBQUMsR0FBRyxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0FBQ3JFLENBQUM7QUFFRCxTQUFnQixlQUFlLENBQUMsT0FBTyxHQUFHLG9DQUFvQztJQUM1RSxPQUFPLElBQUksNkJBQVksQ0FBQyxHQUFHLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDNUQsQ0FBQztBQUVELFNBQWdCLHdCQUF3QixDQUFDLE9BQU8sR0FBRyw2QkFBNkI7SUFDOUUsT0FBTyxJQUFJLDZCQUFZLENBQUMsR0FBRyxFQUFFLDZCQUE2QixFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3ZFLENBQUM7QUFFRCxTQUFnQixhQUFhLENBQUMsT0FBTyxHQUFHLHNDQUFzQztJQUM1RSxPQUFPLElBQUksNkJBQVksQ0FBQyxHQUFHLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDMUQsQ0FBQztBQUVELE1BQU0sd0JBQXdCLEdBQUcsR0FBRyxDQUFDO0FBRXJDLFNBQWdCLGFBQWEsQ0FBQyxNQUFjO0lBQzFDLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxHQUFHLElBQUksTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQztJQUVuRixPQUFPLElBQUksNkJBQVksQ0FDckIsT0FBTyxFQUNQLGdCQUFnQixFQUNoQixnREFBZ0QsQ0FDakQsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFnQixtQkFBbUI7SUFDakMsT0FBTyxJQUFJLDZCQUFZLENBQUMsR0FBRyxFQUFFLGVBQWUsRUFBRSx3Q0FBd0MsQ0FBQyxDQUFDO0FBQzFGLENBQUM7QUFFRCxTQUFnQixlQUFlO0lBQzdCLE9BQU8sSUFBSSw2QkFBWSxDQUFDLEdBQUcsRUFBRSxrQkFBa0IsRUFBRSwyQ0FBMkMsQ0FBQyxDQUFDO0FBQ2hHLENBQUM7QUFFRCxTQUFnQixzQkFBc0IsQ0FDcEMsVUFBa0IsRUFDbEIsT0FBTyxHQUFHLDZCQUE2QjtJQUV2QyxPQUFPLElBQUksNkJBQVksQ0FBQyxHQUFHLEVBQUUseUJBQXlCLEVBQUUsT0FBTyxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztBQUNuRixDQUFDO0FBRVksUUFBQSxpQkFBaUIsR0FBRztJQUMvQixhQUFhLEVBQUUsZ0JBQWdCO0lBQy9CLGdCQUFnQixFQUFFLG1CQUFtQjtDQUM3QixDQUFDO0FBSVgsU0FBZ0IsZUFBZSxDQUM3QixVQUFrQixFQUNsQixPQUFlLEVBQ2YsS0FBcUI7SUFFckIsT0FBTyxJQUFJLDZCQUFZLENBQUMsR0FBRyxFQUFFLG1CQUFtQixFQUFFLE9BQU8sRUFBRTtRQUN6RCxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUU7UUFDbEIsVUFBVTtLQUNYLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFWSxRQUFBLDZCQUE2QixHQUFHLDBCQUEwQixDQUFDO0FBRXhFLFNBQWdCLHNCQUFzQixDQUNwQyxPQUFPLEdBQUcsb0RBQW9ELEVBQzlELE9BQWlCO0lBRWpCLE9BQU8sSUFBSSw2QkFBWSxDQUFDLEdBQUcsRUFBRSxxQ0FBNkIsRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0FBQ3BGLENBQUM7QUFFWSxRQUFBLHlCQUF5QixHQUFHLENBQUMsQ0FBQztBQUU5QixRQUFBLHNCQUFzQixHQUFHLG1CQUFtQixDQUFDO0FBRTFEOzs7R0FHRztBQUNILFNBQWdCLGdCQUFnQixDQUM5QixVQUFtQixFQUNuQixPQUFPLEdBQUcsMkVBQTJFO0lBRXJGLE9BQU8sSUFBSSw2QkFBWSxDQUFDLEdBQUcsRUFBRSw4QkFBc0IsRUFBRSxPQUFPLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0FBQ2hGLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IseUJBQXlCLENBQUMsS0FBYztJQUN0RCxPQUFPLENBQ0wsS0FBSyxZQUFZLDZCQUFZO1FBQzdCLEtBQUssQ0FBQyxJQUFJLEtBQUssOEJBQXNCO1FBQ3JDLEtBQUssQ0FBQyxVQUFVLEtBQUssU0FBUyxDQUMvQixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQWdCLGtCQUFrQixDQUNoQyxPQUFPLEdBQUcsMkRBQTJEO0lBRXJFLE9BQU8sSUFBSSw2QkFBWSxDQUFDLEdBQUcsRUFBRSxzQkFBc0IsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNoRSxDQUFDO0FBRUQsU0FBZ0IscUJBQXFCO0lBQ25DLE9BQU8sSUFBSSw2QkFBWSxDQUNyQixHQUFHLEVBQ0gsd0JBQXdCLEVBQ3hCLDhDQUE4QyxDQUMvQyxDQUFDO0FBQ0osQ0FBQyJ9
@@ -56,7 +56,7 @@ const SECURITY = [{ [SESSION_SCHEME]: [] }, { [API_KEY_SCHEME]: [] }];
56
56
  const ERROR_STATUSES = {
57
57
  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, a required action field left empty or a malformed file value at execute, or a rejected action form (type action_error)',
58
58
  401: 'Missing, invalid, or expired credentials',
59
- 403: 'The action needs approval before it runs (the body carries the approving roles), the Forest identity behind the API key is not allowed, the origin is not allowed for this key, or the agent refused the collection, relation, or action',
59
+ 403: 'The action needs approval before it runs (the body carries the approving roles), the Forest identity behind the API key is not allowed, the origin is not allowed for this key, the Forest server refused to write the activity log the request needs (type audit_not_authorized), or the agent refused the collection, relation, or action',
60
60
  404: 'Unknown collection, relation, or action',
61
61
  413: `The request body exceeds the BFF limit of ${body_limit_1.default}`,
62
62
  415: 'The request Content-Type is neither application/json nor an application/*+json type, including form-urlencoded, and is rejected with 415 instead of being silently dropped; a request carrying a body with no Content-Type at all is rejected the same way; or the declared character set cannot be decoded',
@@ -65,7 +65,7 @@ const ERROR_STATUSES = {
65
65
  500: 'The agent payload could not be mapped to the BFF contract, or the BFF hit an unexpected error',
66
66
  501: 'The BFF is running without an agent configured, so the proxy is not implemented',
67
67
  502: 'The agent refused the connection, its host could not be resolved, or the transport failed another way (a connection reset mid-flight, a socket hang up, a TLS failure) — it failed outright rather than running out of time',
68
- 503: 'The agent schema is unavailable, the agent returned a 5xx, the API key could not be resolved, or the Forest permissions could not be fetched and no fresh cache was left (type permissions_unavailable)',
68
+ 503: 'The agent schema is unavailable, the agent returned a 5xx, the API key could not be resolved, the activity log an action execution must be recorded in could not be written, so the action was not run (type audit_unavailable), or the Forest permissions could not be fetched and no fresh cache was left (type permissions_unavailable)',
69
69
  504: 'The agent did not answer before the BFF timeout (BFF_AGENT_TIMEOUT_MS, 10s by default). The deadline is armed when the request starts, so at the default it also covers a host that accepts nothing and never resets the connection — raise the timeout past the OS connect timeout and that case reverts to 502',
70
70
  };
71
71
  const UNSUPPORTED_RESULT_DESCRIPTION = 'Either the BFF runs without an agent configured, or the action returned a result shape the ' +
@@ -569,4 +569,4 @@ function generateOpenApiDocument(version, { unfolding, hasAiQueryRoute = false,
569
569
  function serializeOpenApi(document) {
570
570
  return JSON.stringify(document, null, 2);
571
571
  }
572
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbmFwaS1kb2N1bWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcGVuYXBpL29wZW5hcGktZG9jdW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMGpCQSwwREFrSUM7QUFFRCw0Q0FFQztBQTdyQkQsbUVBQXNGO0FBRXRGLHNFQUE2QztBQUM3Qyx1Q0FnQm1CO0FBQ25CLHNFQUFxRDtBQUNyRCwrQ0FBa0M7QUFDbEMsK0RBQTZEO0FBQzdELGlFQUErRDtBQUMvRCx3RUFBNEU7QUFFL0QsUUFBQSxlQUFlLEdBQUcsT0FBTyxDQUFDO0FBQzFCLFFBQUEsWUFBWSxHQUFHLFdBQVcsQ0FBQztBQUMzQixRQUFBLGFBQWEsR0FBRyxxQkFBcUIsQ0FBQztBQUVuRCxNQUFNLGNBQWMsR0FBRyxZQUFZLENBQUM7QUFDcEMsTUFBTSxjQUFjLEdBQUcsV0FBVyxDQUFDO0FBRW5DLE1BQU0sUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBRXRFLE1BQU0sY0FBYyxHQUEyQjtJQUM3QyxHQUFHLEVBQUUsa1ZBQWtWO0lBQ3ZWLEdBQUcsRUFBRSwwQ0FBMEM7SUFDL0MsR0FBRyxFQUFFLDBPQUEwTztJQUMvTyxHQUFHLEVBQUUseUNBQXlDO0lBQzlDLEdBQUcsRUFBRSw2Q0FBNkMsb0JBQVUsRUFBRTtJQUM5RCxHQUFHLEVBQUUsNlNBQTZTO0lBQ2xULEdBQUcsRUFBRSx1SUFBdUk7SUFDNUksR0FBRyxFQUFFLDhQQUE4UCxvQ0FBaUIsQ0FBQyxhQUFhLFdBQVcsb0NBQWlCLENBQUMsZ0JBQWdCLDRUQUE0VDtJQUMzb0IsR0FBRyxFQUFFLCtGQUErRjtJQUNwRyxHQUFHLEVBQUUsaUZBQWlGO0lBQ3RGLEdBQUcsRUFBRSw2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
572
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbmFwaS1kb2N1bWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcGVuYXBpL29wZW5hcGktZG9jdW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMGpCQSwwREFrSUM7QUFFRCw0Q0FFQztBQTdyQkQsbUVBQXNGO0FBRXRGLHNFQUE2QztBQUM3Qyx1Q0FnQm1CO0FBQ25CLHNFQUFxRDtBQUNyRCwrQ0FBa0M7QUFDbEMsK0RBQTZEO0FBQzdELGlFQUErRDtBQUMvRCx3RUFBNEU7QUFFL0QsUUFBQSxlQUFlLEdBQUcsT0FBTyxDQUFDO0FBQzFCLFFBQUEsWUFBWSxHQUFHLFdBQVcsQ0FBQztBQUMzQixRQUFBLGFBQWEsR0FBRyxxQkFBcUIsQ0FBQztBQUVuRCxNQUFNLGNBQWMsR0FBRyxZQUFZLENBQUM7QUFDcEMsTUFBTSxjQUFjLEdBQUcsV0FBVyxDQUFDO0FBRW5DLE1BQU0sUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBRXRFLE1BQU0sY0FBYyxHQUEyQjtJQUM3QyxHQUFHLEVBQUUsa1ZBQWtWO0lBQ3ZWLEdBQUcsRUFBRSwwQ0FBMEM7SUFDL0MsR0FBRyxFQUFFLDZVQUE2VTtJQUNsVixHQUFHLEVBQUUseUNBQXlDO0lBQzlDLEdBQUcsRUFBRSw2Q0FBNkMsb0JBQVUsRUFBRTtJQUM5RCxHQUFHLEVBQUUsNlNBQTZTO0lBQ2xULEdBQUcsRUFBRSx1SUFBdUk7SUFDNUksR0FBRyxFQUFFLDhQQUE4UCxvQ0FBaUIsQ0FBQyxhQUFhLFdBQVcsb0NBQWlCLENBQUMsZ0JBQWdCLDRUQUE0VDtJQUMzb0IsR0FBRyxFQUFFLCtGQUErRjtJQUNwRyxHQUFHLEVBQUUsaUZBQWlGO0lBQ3RGLEdBQUcsRUFBRSw2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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forestadmin/agent-bff",
3
- "version": "1.30.2",
3
+ "version": "1.32.0",
4
4
  "main": "dist/index.js",
5
5
  "bin": {
6
6
  "forest-bff": "dist/cli.js"