veryfront 0.1.632 → 0.1.634
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/esm/deno.d.ts +1 -0
- package/esm/deno.js +2 -1
- package/esm/src/agent/ag-ui/browser-encoder.d.ts.map +1 -1
- package/esm/src/agent/ag-ui/browser-encoder.js +0 -2
- package/esm/src/agent/factory.d.ts +6 -1
- package/esm/src/agent/factory.d.ts.map +1 -1
- package/esm/src/agent/factory.js +25 -1
- package/esm/src/agent/types.d.ts +9 -0
- package/esm/src/agent/types.d.ts.map +1 -1
- package/esm/src/cache/backends/api.d.ts.map +1 -1
- package/esm/src/cache/backends/api.js +8 -10
- package/esm/src/cache/backends/batch-results.d.ts +21 -0
- package/esm/src/cache/backends/batch-results.d.ts.map +1 -0
- package/esm/src/cache/backends/batch-results.js +26 -0
- package/esm/src/cache/backends/memory.d.ts.map +1 -1
- package/esm/src/cache/backends/memory.js +7 -10
- package/esm/src/cache/backends/redis.d.ts.map +1 -1
- package/esm/src/cache/backends/redis.js +6 -11
- package/esm/src/chat/ag-ui.d.ts +0 -257
- package/esm/src/chat/ag-ui.d.ts.map +1 -1
- package/esm/src/chat/ag-ui.js +1 -21
- package/esm/src/chat/compat.d.ts +776 -0
- package/esm/src/chat/compat.d.ts.map +1 -0
- package/esm/src/chat/compat.js +113 -0
- package/esm/src/chat/conversation.d.ts +0 -151
- package/esm/src/chat/conversation.d.ts.map +1 -1
- package/esm/src/chat/conversation.js +1 -26
- package/esm/src/chat/message-prep.d.ts +0 -10
- package/esm/src/chat/message-prep.d.ts.map +1 -1
- package/esm/src/chat/message-prep.js +0 -10
- package/esm/src/chat/types.d.ts +0 -339
- package/esm/src/chat/types.d.ts.map +1 -1
- package/esm/src/chat/types.js +1 -29
- package/esm/src/platform/adapters/runtime/deno/adapter.d.ts.map +1 -1
- package/esm/src/platform/adapters/runtime/deno/adapter.js +3 -14
- package/esm/src/platform/compat/http/deno-server.d.ts.map +1 -1
- package/esm/src/platform/compat/http/deno-server.js +3 -14
- package/esm/src/platform/compat/http/native-response.d.ts +29 -0
- package/esm/src/platform/compat/http/native-response.d.ts.map +1 -0
- package/esm/src/platform/compat/http/native-response.js +43 -0
- package/esm/src/server/handlers/dev/dashboard/api.d.ts.map +1 -1
- package/esm/src/server/handlers/dev/dashboard/api.js +1 -10
- package/esm/src/server/handlers/dev/http-helpers.d.ts +17 -0
- package/esm/src/server/handlers/dev/http-helpers.d.ts.map +1 -0
- package/esm/src/server/handlers/dev/http-helpers.js +20 -0
- package/esm/src/server/handlers/dev/projects/api.d.ts.map +1 -1
- package/esm/src/server/handlers/dev/projects/api.js +1 -7
- package/esm/src/utils/version-constant.d.ts +1 -1
- package/esm/src/utils/version-constant.js +1 -1
- package/package.json +5 -1
package/esm/deno.d.ts
CHANGED
package/esm/deno.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export default {
|
|
2
2
|
"name": "veryfront",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.634",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"nodeModulesDir": "auto",
|
|
6
6
|
"workspace": [
|
|
@@ -41,6 +41,7 @@ export default {
|
|
|
41
41
|
"./fonts": "./src/react/fonts/index.ts",
|
|
42
42
|
"./chat": "./src/chat/index.ts",
|
|
43
43
|
"./chat/ag-ui": "./src/chat/ag-ui.ts",
|
|
44
|
+
"./chat/compat": "./src/chat/compat.ts",
|
|
44
45
|
"./chat/protocol": "./src/chat/protocol.ts",
|
|
45
46
|
"./chat/types": "./src/chat/types.ts",
|
|
46
47
|
"./markdown": "./src/markdown/index.ts",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-encoder.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/ag-ui/browser-encoder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,8CAA8C;AAC9C,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhF,mEAAmE;AACnE,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,uCAAuC;AACvC,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,QAAQ,EAAE,8BAA8B,CAAC;CAC1C;AAED,+CAA+C;AAC/C,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,8CAA8C;AAC9C,wBAAgB,6BAA6B,IAAI,uBAAuB,CAYvE;AA6FD,yDAAyD;AACzD,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,8BAA8B,GACvC,aAAa,GAAG,IAAI,CA6BtB;AA4HD,wDAAwD;AACxD,wBAAgB,wCAAwC,CACtD,KAAK,EAAE,uBAAuB,EAC9B,KAAK,EAAE,sBAAsB,GAC5B,uBAAuB,EAAE,
|
|
1
|
+
{"version":3,"file":"browser-encoder.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/ag-ui/browser-encoder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,8CAA8C;AAC9C,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhF,mEAAmE;AACnE,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,uCAAuC;AACvC,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,QAAQ,EAAE,8BAA8B,CAAC;CAC1C;AAED,+CAA+C;AAC/C,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,8CAA8C;AAC9C,wBAAgB,6BAA6B,IAAI,uBAAuB,CAYvE;AA6FD,yDAAyD;AACzD,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,8BAA8B,GACvC,aAAa,GAAG,IAAI,CA6BtB;AA4HD,wDAAwD;AACxD,wBAAgB,wCAAwC,CACtD,KAAK,EAAE,uBAAuB,EAC9B,KAAK,EAAE,sBAAsB,GAC5B,uBAAuB,EAAE,CA8M3B;AAED,4CAA4C;AAC5C,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,uBAAuB,EAC9B,QAAQ,EAAE,aAAa,GAAG,IAAI,GAC7B,uBAAuB,EAAE,CA8B3B"}
|
|
@@ -344,7 +344,6 @@ export function mapRuntimeStreamEventToAgUiBrowserEvents(state, event) {
|
|
|
344
344
|
];
|
|
345
345
|
case "step-start":
|
|
346
346
|
case "start-step":
|
|
347
|
-
state.sawVisibleOutput = true;
|
|
348
347
|
return [
|
|
349
348
|
...closeOpenTextEvent(state),
|
|
350
349
|
...closeOpenReasoningEvent(state),
|
|
@@ -352,7 +351,6 @@ export function mapRuntimeStreamEventToAgUiBrowserEvents(state, event) {
|
|
|
352
351
|
];
|
|
353
352
|
case "step-end":
|
|
354
353
|
case "finish-step":
|
|
355
|
-
state.sawVisibleOutput = true;
|
|
356
354
|
return [
|
|
357
355
|
...closeOpenTextEvent(state),
|
|
358
356
|
...closeOpenReasoningEvent(state),
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import type { Agent, AgentConfig, AgentMiddleware } from "./types.js";
|
|
2
2
|
/** Agent helper. */
|
|
3
3
|
export declare function agent(config: AgentConfig): Agent;
|
|
4
|
+
/**
|
|
5
|
+
* Default maximum agent input character length used by the built-in
|
|
6
|
+
* security middleware when the agent does not set `inputMaxCharacterLimit`.
|
|
7
|
+
*/
|
|
8
|
+
export declare const DEFAULT_AGENT_INPUT_MAX_CHARACTER_LIMIT = 100000;
|
|
4
9
|
/**
|
|
5
10
|
* Resolve the middleware array for an agent, prepending security middleware
|
|
6
11
|
* unless explicitly opted out with `security: false`.
|
|
7
12
|
*/
|
|
8
|
-
export declare function resolveSecurityMiddleware(config: Pick<AgentConfig, "security" | "middleware">): AgentMiddleware[];
|
|
13
|
+
export declare function resolveSecurityMiddleware(config: Pick<AgentConfig, "security" | "middleware" | "inputMaxCharacterLimit">): AgentMiddleware[];
|
|
9
14
|
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/src/agent/factory.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,KAAK,EACL,WAAW,EACX,eAAe,EAKhB,MAAM,YAAY,CAAC;AA+CpB,oBAAoB;AACpB,wBAAgB,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,KAAK,CA8MhD;AAcD;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/src/agent/factory.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,KAAK,EACL,WAAW,EACX,eAAe,EAKhB,MAAM,YAAY,CAAC;AA+CpB,oBAAoB;AACpB,wBAAgB,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,KAAK,CA8MhD;AAcD;;;GAGG;AACH,eAAO,MAAM,uCAAuC,SAAU,CAAC;AAuB/D;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,YAAY,GAAG,wBAAwB,CAAC,GAC9E,eAAe,EAAE,CAcnB"}
|
package/esm/src/agent/factory.js
CHANGED
|
@@ -184,6 +184,30 @@ if (!("__vfAgentFactory" in dntShim.dntGlobalThis)) {
|
|
|
184
184
|
configurable: false,
|
|
185
185
|
});
|
|
186
186
|
}
|
|
187
|
+
/**
|
|
188
|
+
* Default maximum agent input character length used by the built-in
|
|
189
|
+
* security middleware when the agent does not set `inputMaxCharacterLimit`.
|
|
190
|
+
*/
|
|
191
|
+
export const DEFAULT_AGENT_INPUT_MAX_CHARACTER_LIMIT = 100_000;
|
|
192
|
+
/**
|
|
193
|
+
* Resolve `inputMaxCharacterLimit` to a usable positive integer. Guards
|
|
194
|
+
* against `NaN`, `Infinity`, and non-positive values that would otherwise
|
|
195
|
+
* silently disable the input length check inside `InputValidator`
|
|
196
|
+
* (it compares with `input.length > maxLength`, which is always false for
|
|
197
|
+
* `NaN`/`Infinity`). Invalid overrides fall back to the default and emit a
|
|
198
|
+
* warning so misconfiguration is visible.
|
|
199
|
+
*/
|
|
200
|
+
function resolveInputMaxCharacterLimit(override) {
|
|
201
|
+
if (override == null)
|
|
202
|
+
return DEFAULT_AGENT_INPUT_MAX_CHARACTER_LIMIT;
|
|
203
|
+
if (!Number.isFinite(override) || override <= 0) {
|
|
204
|
+
agentLogger.warn(`Ignoring invalid inputMaxCharacterLimit=${String(override)}; ` +
|
|
205
|
+
`falling back to default ${DEFAULT_AGENT_INPUT_MAX_CHARACTER_LIMIT}. ` +
|
|
206
|
+
`Expected a finite positive number.`);
|
|
207
|
+
return DEFAULT_AGENT_INPUT_MAX_CHARACTER_LIMIT;
|
|
208
|
+
}
|
|
209
|
+
return override;
|
|
210
|
+
}
|
|
187
211
|
/**
|
|
188
212
|
* Resolve the middleware array for an agent, prepending security middleware
|
|
189
213
|
* unless explicitly opted out with `security: false`.
|
|
@@ -194,7 +218,7 @@ export function resolveSecurityMiddleware(config) {
|
|
|
194
218
|
return [
|
|
195
219
|
securityMiddleware({
|
|
196
220
|
input: {
|
|
197
|
-
maxLength:
|
|
221
|
+
maxLength: resolveInputMaxCharacterLimit(config.inputMaxCharacterLimit),
|
|
198
222
|
blockedPatterns: COMMON_BLOCKED_PATTERNS.promptInjection,
|
|
199
223
|
},
|
|
200
224
|
output: {
|
package/esm/src/agent/types.d.ts
CHANGED
|
@@ -114,6 +114,15 @@ export interface AgentConfig {
|
|
|
114
114
|
suggestions?: Suggestions;
|
|
115
115
|
/** Set to false to disable the default security middleware */
|
|
116
116
|
security?: false;
|
|
117
|
+
/**
|
|
118
|
+
* Maximum input character length enforced by the default security
|
|
119
|
+
* middleware. The middleware JSON-stringifies the agent input (latest
|
|
120
|
+
* user message plus any conversation history and structured tool
|
|
121
|
+
* results carried with it) and rejects anything longer.
|
|
122
|
+
*
|
|
123
|
+
* Defaults to 100_000. Ignored when `security: false`.
|
|
124
|
+
*/
|
|
125
|
+
inputMaxCharacterLimit?: number;
|
|
117
126
|
}
|
|
118
127
|
/** Configuration used by resolved agent. */
|
|
119
128
|
export type ResolvedAgentConfig = AgentConfig & {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/src/agent/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/src/agent/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../../src/src/cache/backends/api.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../../src/src/cache/backends/api.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AA0BhD,qBAAa,eAAgB,YAAW,YAAY;IAClD,QAAQ,CAAC,IAAI,EAAG,KAAK,CAAU;IAC/B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,cAAc,CAAC;gBAGrB,OAAO,GAAE;QACP,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;KACxB;IAgBR,OAAO,CAAC,SAAS;YAIH,OAAO;IA2Ff,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQxC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;YAuBrD,eAAe;IAKvB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,SAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQhE,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAYrF,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/B,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAMrD"}
|
|
@@ -5,6 +5,7 @@ import { SpanNames } from "../../observability/tracing/span-names.js";
|
|
|
5
5
|
import { tryGetCacheKeyContext } from "../cache-key-builder.js";
|
|
6
6
|
import { CircuitBreakerOpen, getCircuitBreaker } from "../../utils/circuit-breaker.js";
|
|
7
7
|
import { getEnvValue } from "./helpers.js";
|
|
8
|
+
import { buildBatchResults } from "./batch-results.js";
|
|
8
9
|
import { REQUEST_ERROR } from "../../errors/index.js";
|
|
9
10
|
const logger = baseLogger.component("api-cache-backend");
|
|
10
11
|
const DEFAULT_TIMEOUT_MS = 10_000;
|
|
@@ -121,23 +122,20 @@ export class ApiCacheBackend {
|
|
|
121
122
|
return result?.value ?? null;
|
|
122
123
|
}
|
|
123
124
|
async getBatch(keys) {
|
|
124
|
-
const results = new Map();
|
|
125
125
|
if (keys.length === 0)
|
|
126
|
-
return
|
|
127
|
-
const
|
|
128
|
-
const response = await this.request("POST", "/get-batch", { keys:
|
|
126
|
+
return new Map();
|
|
127
|
+
const prefixedByKey = new Map(keys.map((k) => [k, this.prefixKey(k)]));
|
|
128
|
+
const response = await this.request("POST", "/get-batch", { keys: keys.map((k) => prefixedByKey.get(k)) });
|
|
129
129
|
if (!response?.values) {
|
|
130
130
|
logger.debug("Batch endpoint failed, falling back to individual gets", {
|
|
131
131
|
keyCount: keys.length,
|
|
132
132
|
});
|
|
133
133
|
return this.getIndividually(keys);
|
|
134
134
|
}
|
|
135
|
-
|
|
136
|
-
const
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
}
|
|
140
|
-
return results;
|
|
135
|
+
return buildBatchResults(keys, (key) => {
|
|
136
|
+
const prefixedKey = prefixedByKey.get(key);
|
|
137
|
+
return response.values[prefixedKey] ?? null;
|
|
138
|
+
});
|
|
141
139
|
}
|
|
142
140
|
async getIndividually(keys) {
|
|
143
141
|
const results = await Promise.all(keys.map(async (key) => [key, await this.get(key)]));
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared batch-result assembly for cache backends.
|
|
3
|
+
*
|
|
4
|
+
* Several backends implement `getBatch` by iterating the requested keys and
|
|
5
|
+
* building a `Map<string, string | null>` where each key resolves to its value
|
|
6
|
+
* (or `null` when missing/expired/unavailable). This helper centralizes that
|
|
7
|
+
* assembly so the per-backend code only supplies the resolver.
|
|
8
|
+
*
|
|
9
|
+
* @module cache/backends/batch-results
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Build a `Map` of batch results by resolving each key in order.
|
|
13
|
+
*
|
|
14
|
+
* The map preserves the requested keys' insertion order. `resolve` is invoked
|
|
15
|
+
* once per key and must return the resolved value or `null`.
|
|
16
|
+
*
|
|
17
|
+
* @param keys Requested cache keys.
|
|
18
|
+
* @param resolve Resolver mapping a key to its value (or `null`).
|
|
19
|
+
*/
|
|
20
|
+
export declare function buildBatchResults(keys: string[], resolve: (key: string) => string | null): Map<string, string | null>;
|
|
21
|
+
//# sourceMappingURL=batch-results.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch-results.d.ts","sourceRoot":"","sources":["../../../../src/src/cache/backends/batch-results.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GACtC,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAM5B"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared batch-result assembly for cache backends.
|
|
3
|
+
*
|
|
4
|
+
* Several backends implement `getBatch` by iterating the requested keys and
|
|
5
|
+
* building a `Map<string, string | null>` where each key resolves to its value
|
|
6
|
+
* (or `null` when missing/expired/unavailable). This helper centralizes that
|
|
7
|
+
* assembly so the per-backend code only supplies the resolver.
|
|
8
|
+
*
|
|
9
|
+
* @module cache/backends/batch-results
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Build a `Map` of batch results by resolving each key in order.
|
|
13
|
+
*
|
|
14
|
+
* The map preserves the requested keys' insertion order. `resolve` is invoked
|
|
15
|
+
* once per key and must return the resolved value or `null`.
|
|
16
|
+
*
|
|
17
|
+
* @param keys Requested cache keys.
|
|
18
|
+
* @param resolve Resolver mapping a key to its value (or `null`).
|
|
19
|
+
*/
|
|
20
|
+
export function buildBatchResults(keys, resolve) {
|
|
21
|
+
const results = new Map();
|
|
22
|
+
for (const key of keys) {
|
|
23
|
+
results.set(key, resolve(key));
|
|
24
|
+
}
|
|
25
|
+
return results;
|
|
26
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../../src/src/cache/backends/memory.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../../src/src/cache/backends/memory.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAMhD,qBAAa,kBAAmB,YAAW,YAAY;IACrD,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAU;IAClC,OAAO,CAAC,KAAK,CAA8E;IAC3F,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,gBAAgB,CAAK;gBAEjB,UAAU,SAA2B,EAAE,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE;IAKtF,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,WAAW;IAQnB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAaxC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;IAmB7D,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,SAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BhF,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAkCrF,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO/B,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA0B9C,KAAK,IAAI,IAAI;IAMb,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;CACF"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { MEMORY_CACHE_MAX_ENTRIES, MEMORY_CACHE_MAX_SIZE_BYTES, } from "../../utils/constants/cache.js";
|
|
2
|
+
import { buildBatchResults } from "./batch-results.js";
|
|
2
3
|
const DEFAULT_TTL_SECONDS = 300;
|
|
3
4
|
const MAX_REGEX_CACHE_SIZE = 100;
|
|
4
5
|
export class MemoryCacheBackend {
|
|
@@ -36,22 +37,18 @@ export class MemoryCacheBackend {
|
|
|
36
37
|
return Promise.resolve(entry.value);
|
|
37
38
|
}
|
|
38
39
|
getBatch(keys) {
|
|
39
|
-
const results = new Map();
|
|
40
40
|
const now = Date.now();
|
|
41
|
-
|
|
41
|
+
const results = buildBatchResults(keys, (key) => {
|
|
42
42
|
const entry = this.store.get(key);
|
|
43
|
-
if (!entry)
|
|
44
|
-
|
|
45
|
-
continue;
|
|
46
|
-
}
|
|
43
|
+
if (!entry)
|
|
44
|
+
return null;
|
|
47
45
|
if (now > entry.expiresAt) {
|
|
48
46
|
this.currentSizeBytes -= entry.sizeBytes;
|
|
49
47
|
this.store.delete(key);
|
|
50
|
-
|
|
51
|
-
continue;
|
|
48
|
+
return null;
|
|
52
49
|
}
|
|
53
|
-
|
|
54
|
-
}
|
|
50
|
+
return entry.value;
|
|
51
|
+
});
|
|
55
52
|
return Promise.resolve(results);
|
|
56
53
|
}
|
|
57
54
|
set(key, value, ttlSeconds = DEFAULT_TTL_SECONDS) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../../../src/src/cache/backends/redis.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,iBAAiB,EAElB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../../../src/src/cache/backends/redis.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,iBAAiB,EAElB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAMhD,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAE7B,qBAAa,iBAAkB,YAAW,YAAY;IACpD,QAAQ,CAAC,IAAI,EAAG,OAAO,CAAU;IACjC,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,SAAS,CAAS;gBAEd,SAAS,SAAc;IAInC,OAAO,CAAC,SAAS;IAIjB,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAoBxB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAWxC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;IAmB7D,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,SAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUhE,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAUrF,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU/B,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAqBrD"}
|
|
@@ -2,6 +2,7 @@ import { logger as baseLogger } from "../../utils/index.js";
|
|
|
2
2
|
import { withSpan } from "../../observability/tracing/otlp-setup.js";
|
|
3
3
|
import { SpanNames } from "../../observability/tracing/span-names.js";
|
|
4
4
|
import { getRedisClient, isRedisConfigured, } from "../../utils/redis-client.js";
|
|
5
|
+
import { buildBatchResults } from "./batch-results.js";
|
|
5
6
|
const logger = baseLogger.component("redis-cache-backend");
|
|
6
7
|
// Re-export for use by factory
|
|
7
8
|
export { isRedisConfigured };
|
|
@@ -43,25 +44,19 @@ export class RedisCacheBackend {
|
|
|
43
44
|
}
|
|
44
45
|
}
|
|
45
46
|
async getBatch(keys) {
|
|
46
|
-
const results = new Map();
|
|
47
47
|
if (keys.length === 0)
|
|
48
|
-
return
|
|
48
|
+
return new Map();
|
|
49
49
|
if (!this.client) {
|
|
50
|
-
|
|
51
|
-
results.set(key, null);
|
|
52
|
-
return results;
|
|
50
|
+
return buildBatchResults(keys, () => null);
|
|
53
51
|
}
|
|
54
52
|
try {
|
|
55
53
|
const fetched = await Promise.all(keys.map(async (key) => [key, await this.get(key)]));
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
return results;
|
|
54
|
+
const values = new Map(fetched);
|
|
55
|
+
return buildBatchResults(keys, (key) => values.get(key) ?? null);
|
|
59
56
|
}
|
|
60
57
|
catch (error) {
|
|
61
58
|
logger.debug("GetBatch failed", { keyCount: keys.length, error });
|
|
62
|
-
|
|
63
|
-
results.set(key, null);
|
|
64
|
-
return results;
|
|
59
|
+
return buildBatchResults(keys, () => null);
|
|
65
60
|
}
|
|
66
61
|
}
|
|
67
62
|
async set(key, value, ttlSeconds = 300) {
|