@agimon-ai/doompi-cache 0.0.1-alpha.37 → 0.0.1-alpha.39
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/dist/api-contracts.cjs +7 -1
- package/dist/api-contracts.d.cts +1 -1
- package/dist/api-contracts.d.mts +1 -1
- package/dist/api-contracts.mjs +2 -1
- package/dist/env.cjs +7 -1
- package/dist/env.d.cts +1 -1
- package/dist/env.d.mts +1 -1
- package/dist/env.mjs +2 -1
- package/dist/extensions/pi.cjs +458 -1
- package/dist/extensions/pi.cjs.map +1 -1
- package/dist/extensions/pi.d.cts +3 -4
- package/dist/extensions/pi.d.cts.map +1 -1
- package/dist/extensions/pi.d.mts +3 -4
- package/dist/extensions/pi.d.mts.map +1 -1
- package/dist/extensions/pi.mjs +453 -1
- package/dist/extensions/pi.mjs.map +1 -1
- package/dist/extensions/server.cjs +23 -1
- package/dist/extensions/server.cjs.map +1 -1
- package/dist/extensions/server.d.cts +3 -3
- package/dist/extensions/server.d.cts.map +1 -1
- package/dist/extensions/server.d.mts +3 -3
- package/dist/extensions/server.d.mts.map +1 -1
- package/dist/extensions/server.mjs +18 -1
- package/dist/extensions/server.mjs.map +1 -1
- package/dist/index.cjs +22 -1
- package/dist/index.d.cts +7 -7
- package/dist/index.d.mts +7 -7
- package/dist/index.mjs +7 -1
- package/dist/pi-cache-optimizer-D5NlAlHL.cjs +7915 -0
- package/dist/pi-cache-optimizer-D5NlAlHL.cjs.map +1 -0
- package/dist/pi-cache-optimizer-D8Cz8JHJ.mjs +7914 -0
- package/dist/pi-cache-optimizer-D8Cz8JHJ.mjs.map +1 -0
- package/dist/src/constants/environment.cjs +14 -0
- package/dist/src/constants/environment.cjs.map +1 -0
- package/dist/src/constants/environment.d.cts.map +1 -0
- package/dist/src/constants/environment.d.mts.map +1 -0
- package/dist/src/constants/environment.mjs +10 -0
- package/dist/src/constants/environment.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/cacheHooks.cjs +47 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/cacheHooks.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/cacheHooks.mjs +47 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/cacheHooks.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/before-provider-request.server.cjs +7 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/before-provider-request.server.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/before-provider-request.server.mjs +8 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/before-provider-request.server.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-shutdown.server.cjs +7 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-shutdown.server.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-shutdown.server.mjs +8 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-shutdown.server.mjs.map +1 -0
- package/dist/src/models/promptCacheTelemetry.cjs +45 -0
- package/dist/src/models/promptCacheTelemetry.cjs.map +1 -0
- package/dist/src/models/promptCacheTelemetry.d.cts.map +1 -0
- package/dist/src/models/promptCacheTelemetry.d.mts.map +1 -0
- package/dist/src/models/promptCacheTelemetry.mjs +45 -0
- package/dist/src/models/promptCacheTelemetry.mjs.map +1 -0
- package/dist/src/schemas/apiContracts.cjs +13 -0
- package/dist/src/schemas/apiContracts.cjs.map +1 -0
- package/dist/{schemas → src/schemas}/apiContracts.d.cts.map +1 -1
- package/dist/{schemas → src/schemas}/apiContracts.d.mts.map +1 -1
- package/dist/src/schemas/apiContracts.mjs +13 -0
- package/dist/src/schemas/apiContracts.mjs.map +1 -0
- package/dist/src/services/canonical/index.cjs +28 -0
- package/dist/src/services/canonical/index.cjs.map +1 -0
- package/dist/src/services/canonical/index.d.cts.map +1 -0
- package/dist/src/services/canonical/index.d.mts.map +1 -0
- package/dist/src/services/canonical/index.mjs +27 -0
- package/dist/src/services/canonical/index.mjs.map +1 -0
- package/dist/src/services/digest/index.cjs +9 -0
- package/dist/src/services/digest/index.cjs.map +1 -0
- package/dist/{services → src/services}/digest/index.d.cts.map +1 -1
- package/dist/{services → src/services}/digest/index.d.mts.map +1 -1
- package/dist/src/services/digest/index.mjs +9 -0
- package/dist/src/services/digest/index.mjs.map +1 -0
- package/dist/src/services/namespace/index.cjs +78 -0
- package/dist/src/services/namespace/index.cjs.map +1 -0
- package/dist/src/services/namespace/index.d.cts.map +1 -0
- package/dist/src/services/namespace/index.d.mts.map +1 -0
- package/dist/src/services/namespace/index.mjs +74 -0
- package/dist/src/services/namespace/index.mjs.map +1 -0
- package/dist/src/services/promptCacheTelemetry/index.cjs +22 -0
- package/dist/src/services/promptCacheTelemetry/index.cjs.map +1 -0
- package/dist/src/services/promptCacheTelemetry/index.d.cts.map +1 -0
- package/dist/src/services/promptCacheTelemetry/index.d.mts.map +1 -0
- package/dist/src/services/promptCacheTelemetry/index.mjs +20 -0
- package/dist/src/services/promptCacheTelemetry/index.mjs.map +1 -0
- package/dist/src/services/providerPolicy/index.cjs +43 -0
- package/dist/src/services/providerPolicy/index.cjs.map +1 -0
- package/dist/src/services/providerPolicy/index.d.cts.map +1 -0
- package/dist/src/services/providerPolicy/index.d.mts.map +1 -0
- package/dist/src/services/providerPolicy/index.mjs +41 -0
- package/dist/src/services/providerPolicy/index.mjs.map +1 -0
- package/dist/src/types/cache.d.cts.map +1 -0
- package/dist/src/types/cache.d.mts.map +1 -0
- package/package.json +11 -10
- package/dist/constants/environment.cjs +0 -2
- package/dist/constants/environment.cjs.map +0 -1
- package/dist/constants/environment.d.cts.map +0 -1
- package/dist/constants/environment.d.mts.map +0 -1
- package/dist/constants/environment.mjs +0 -2
- package/dist/constants/environment.mjs.map +0 -1
- package/dist/controllers/cacheHooks.cjs +0 -2
- package/dist/controllers/cacheHooks.cjs.map +0 -1
- package/dist/controllers/cacheHooks.mjs +0 -2
- package/dist/controllers/cacheHooks.mjs.map +0 -1
- package/dist/models/promptCacheTelemetry.cjs +0 -2
- package/dist/models/promptCacheTelemetry.cjs.map +0 -1
- package/dist/models/promptCacheTelemetry.d.cts.map +0 -1
- package/dist/models/promptCacheTelemetry.d.mts.map +0 -1
- package/dist/models/promptCacheTelemetry.mjs +0 -2
- package/dist/models/promptCacheTelemetry.mjs.map +0 -1
- package/dist/pi-cache-optimizer-CHS6R_1P.mjs +0 -59
- package/dist/pi-cache-optimizer-CHS6R_1P.mjs.map +0 -1
- package/dist/pi-cache-optimizer-CTaHKnUK.cjs +0 -59
- package/dist/pi-cache-optimizer-CTaHKnUK.cjs.map +0 -1
- package/dist/schemas/apiContracts.cjs +0 -2
- package/dist/schemas/apiContracts.cjs.map +0 -1
- package/dist/schemas/apiContracts.mjs +0 -2
- package/dist/schemas/apiContracts.mjs.map +0 -1
- package/dist/services/canonical/index.cjs +0 -2
- package/dist/services/canonical/index.cjs.map +0 -1
- package/dist/services/canonical/index.d.cts.map +0 -1
- package/dist/services/canonical/index.d.mts.map +0 -1
- package/dist/services/canonical/index.mjs +0 -2
- package/dist/services/canonical/index.mjs.map +0 -1
- package/dist/services/digest/index.cjs +0 -2
- package/dist/services/digest/index.cjs.map +0 -1
- package/dist/services/digest/index.mjs +0 -2
- package/dist/services/digest/index.mjs.map +0 -1
- package/dist/services/namespace/index.cjs +0 -2
- package/dist/services/namespace/index.cjs.map +0 -1
- package/dist/services/namespace/index.d.cts.map +0 -1
- package/dist/services/namespace/index.d.mts.map +0 -1
- package/dist/services/namespace/index.mjs +0 -2
- package/dist/services/namespace/index.mjs.map +0 -1
- package/dist/services/promptCacheTelemetry/index.cjs +0 -2
- package/dist/services/promptCacheTelemetry/index.cjs.map +0 -1
- package/dist/services/promptCacheTelemetry/index.d.cts.map +0 -1
- package/dist/services/promptCacheTelemetry/index.d.mts.map +0 -1
- package/dist/services/promptCacheTelemetry/index.mjs +0 -2
- package/dist/services/promptCacheTelemetry/index.mjs.map +0 -1
- package/dist/services/providerPolicy/index.cjs +0 -2
- package/dist/services/providerPolicy/index.cjs.map +0 -1
- package/dist/services/providerPolicy/index.d.cts.map +0 -1
- package/dist/services/providerPolicy/index.d.mts.map +0 -1
- package/dist/services/providerPolicy/index.mjs +0 -2
- package/dist/services/providerPolicy/index.mjs.map +0 -1
- package/dist/types/cache.d.cts.map +0 -1
- package/dist/types/cache.d.mts.map +0 -1
- /package/dist/{constants → src/constants}/environment.d.cts +0 -0
- /package/dist/{constants → src/constants}/environment.d.mts +0 -0
- /package/dist/{models → src/models}/promptCacheTelemetry.d.cts +0 -0
- /package/dist/{models → src/models}/promptCacheTelemetry.d.mts +0 -0
- /package/dist/{schemas → src/schemas}/apiContracts.d.cts +0 -0
- /package/dist/{schemas → src/schemas}/apiContracts.d.mts +0 -0
- /package/dist/{services → src/services}/canonical/index.d.cts +0 -0
- /package/dist/{services → src/services}/canonical/index.d.mts +0 -0
- /package/dist/{services → src/services}/digest/index.d.cts +0 -0
- /package/dist/{services → src/services}/digest/index.d.mts +0 -0
- /package/dist/{services → src/services}/namespace/index.d.cts +0 -0
- /package/dist/{services → src/services}/namespace/index.d.mts +0 -0
- /package/dist/{services → src/services}/promptCacheTelemetry/index.d.cts +0 -0
- /package/dist/{services → src/services}/promptCacheTelemetry/index.d.mts +0 -0
- /package/dist/{services → src/services}/providerPolicy/index.d.cts +0 -0
- /package/dist/{services → src/services}/providerPolicy/index.d.mts +0 -0
- /package/dist/{types → src/types}/cache.d.cts +0 -0
- /package/dist/{types → src/types}/cache.d.mts +0 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { canonicalJson } from "../canonical/index.mjs";
|
|
2
|
+
//#region src/services/namespace/index.ts
|
|
3
|
+
const KEY_PREFIX = "dpc1_";
|
|
4
|
+
const PARENT_PREFIX = "dpn1_";
|
|
5
|
+
const CHILD_PREFIX = "dch1_";
|
|
6
|
+
const ROOT_PREFIX = "dpr1_";
|
|
7
|
+
const MODEL_PREFIX = "dpm1_";
|
|
8
|
+
function digestIdentity(prefix, value, digest) {
|
|
9
|
+
return `${prefix}${digest(canonicalJson(value))}`;
|
|
10
|
+
}
|
|
11
|
+
function normalizedPersona(value) {
|
|
12
|
+
return value?.trim().replaceAll("\\", "/") || void 0;
|
|
13
|
+
}
|
|
14
|
+
function activeMinorModes(modes) {
|
|
15
|
+
return modes.filter(({ activation }) => activation === "active" || activation === "activating").map(({ source, id, modelContextVariant }) => ({
|
|
16
|
+
source,
|
|
17
|
+
id,
|
|
18
|
+
...modelContextVariant ? { modelContextVariant } : {}
|
|
19
|
+
})).sort((left, right) => left.source.localeCompare(right.source) || left.id.localeCompare(right.id));
|
|
20
|
+
}
|
|
21
|
+
function createRootSessionIdentity(rootSessionId, digest) {
|
|
22
|
+
return digestIdentity(ROOT_PREFIX, {
|
|
23
|
+
version: 1,
|
|
24
|
+
rootSessionId
|
|
25
|
+
}, digest);
|
|
26
|
+
}
|
|
27
|
+
function createParentPromptCacheNamespace(state, digest) {
|
|
28
|
+
return digestIdentity(PARENT_PREFIX, {
|
|
29
|
+
version: 1,
|
|
30
|
+
rootSession: createRootSessionIdentity(state.rootSessionId, digest),
|
|
31
|
+
compositionFingerprint: state.compositionFingerprint ?? null,
|
|
32
|
+
majorMode: state.majorMode,
|
|
33
|
+
domains: [...state.domains],
|
|
34
|
+
profile: state.profile ?? null,
|
|
35
|
+
persona: normalizedPersona(state.persona) ?? null,
|
|
36
|
+
minorModes: activeMinorModes(state.minorModes)
|
|
37
|
+
}, digest);
|
|
38
|
+
}
|
|
39
|
+
function createChildPromptCacheProjection(projection, digest) {
|
|
40
|
+
return digestIdentity(CHILD_PREFIX, {
|
|
41
|
+
version: 1,
|
|
42
|
+
systemPrompt: projection.systemPrompt ?? null,
|
|
43
|
+
tools: [...projection.tools],
|
|
44
|
+
excludedTools: [...projection.excludedTools].sort((left, right) => left.localeCompare(right)),
|
|
45
|
+
extensions: [...projection.extensions],
|
|
46
|
+
inheritProjectContext: projection.inheritProjectContext ?? null,
|
|
47
|
+
inheritSkills: projection.inheritSkills ?? null,
|
|
48
|
+
fanout: projection.fanout ?? null,
|
|
49
|
+
structuredOutputSchema: projection.structuredOutputSchema ?? null
|
|
50
|
+
}, digest);
|
|
51
|
+
}
|
|
52
|
+
function createPromptCacheModelFingerprint(model, digest) {
|
|
53
|
+
return digestIdentity(MODEL_PREFIX, {
|
|
54
|
+
version: 1,
|
|
55
|
+
virtualProvider: model.virtualProvider ?? null,
|
|
56
|
+
virtualModel: model.virtualModel ?? null,
|
|
57
|
+
api: model.api ?? null,
|
|
58
|
+
baseUrl: model.baseUrl ?? null,
|
|
59
|
+
wireModel: model.wireModel ?? null
|
|
60
|
+
}, digest);
|
|
61
|
+
}
|
|
62
|
+
function createPromptCacheKey(parentNamespace, scope, modelFingerprint, digest, childProjection) {
|
|
63
|
+
return digestIdentity(KEY_PREFIX, {
|
|
64
|
+
version: 1,
|
|
65
|
+
parentNamespace,
|
|
66
|
+
scope,
|
|
67
|
+
childProjection: childProjection ?? null,
|
|
68
|
+
modelFingerprint
|
|
69
|
+
}, digest);
|
|
70
|
+
}
|
|
71
|
+
//#endregion
|
|
72
|
+
export { createChildPromptCacheProjection, createParentPromptCacheNamespace, createPromptCacheKey, createPromptCacheModelFingerprint, createRootSessionIdentity };
|
|
73
|
+
|
|
74
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/services/namespace/index.ts"],"sourcesContent":["import type {\n PromptCacheChildProjection,\n PromptCacheDigest,\n PromptCacheMinorModeState,\n PromptCacheModelIdentity,\n PromptCacheParentState,\n} from '../../types/cache';\nimport { canonicalJson } from '../canonical';\n\nconst KEY_PREFIX = 'dpc1_';\nconst PARENT_PREFIX = 'dpn1_';\nconst CHILD_PREFIX = 'dch1_';\nconst ROOT_PREFIX = 'dpr1_';\nconst MODEL_PREFIX = 'dpm1_';\n\nfunction digestIdentity(prefix: string, value: unknown, digest: PromptCacheDigest): string {\n return `${prefix}${digest(canonicalJson(value))}`;\n}\n\nfunction normalizedPersona(value: string | undefined): string | undefined {\n const normalized = value?.trim().replaceAll('\\\\', '/');\n return normalized || undefined;\n}\n\nfunction activeMinorModes(modes: readonly PromptCacheMinorModeState[]): readonly Record<string, string>[] {\n return modes\n .filter(({ activation }) => activation === 'active' || activation === 'activating')\n .map(({ source, id, modelContextVariant }) => ({\n source,\n id,\n ...(modelContextVariant ? { modelContextVariant } : {}),\n }))\n .sort((left, right) => left.source.localeCompare(right.source) || left.id.localeCompare(right.id));\n}\n\nexport function createRootSessionIdentity(rootSessionId: string, digest: PromptCacheDigest): string {\n return digestIdentity(ROOT_PREFIX, { version: 1, rootSessionId }, digest);\n}\n\nexport function createParentPromptCacheNamespace(state: PromptCacheParentState, digest: PromptCacheDigest): string {\n return digestIdentity(\n PARENT_PREFIX,\n {\n version: 1,\n rootSession: createRootSessionIdentity(state.rootSessionId, digest),\n compositionFingerprint: state.compositionFingerprint ?? null,\n majorMode: state.majorMode,\n domains: [...state.domains],\n profile: state.profile ?? null,\n persona: normalizedPersona(state.persona) ?? null,\n minorModes: activeMinorModes(state.minorModes),\n },\n digest,\n );\n}\n\nexport function createChildPromptCacheProjection(\n projection: PromptCacheChildProjection,\n digest: PromptCacheDigest,\n): string {\n return digestIdentity(\n CHILD_PREFIX,\n {\n version: 1,\n systemPrompt: projection.systemPrompt ?? null,\n tools: [...projection.tools],\n excludedTools: [...projection.excludedTools].sort((left, right) => left.localeCompare(right)),\n extensions: [...projection.extensions],\n inheritProjectContext: projection.inheritProjectContext ?? null,\n inheritSkills: projection.inheritSkills ?? null,\n fanout: projection.fanout ?? null,\n structuredOutputSchema: projection.structuredOutputSchema ?? null,\n },\n digest,\n );\n}\n\nexport function createPromptCacheModelFingerprint(model: PromptCacheModelIdentity, digest: PromptCacheDigest): string {\n return digestIdentity(\n MODEL_PREFIX,\n {\n version: 1,\n virtualProvider: model.virtualProvider ?? null,\n virtualModel: model.virtualModel ?? null,\n api: model.api ?? null,\n baseUrl: model.baseUrl ?? null,\n wireModel: model.wireModel ?? null,\n },\n digest,\n );\n}\n\nexport function createPromptCacheKey(\n parentNamespace: string,\n scope: 'parent' | 'child',\n modelFingerprint: string,\n digest: PromptCacheDigest,\n childProjection?: string,\n): string {\n return digestIdentity(\n KEY_PREFIX,\n {\n version: 1,\n parentNamespace,\n scope,\n childProjection: childProjection ?? null,\n modelFingerprint,\n },\n digest,\n );\n}\n"],"mappings":";;AASA,MAAM,aAAa;AACnB,MAAM,gBAAgB;AACtB,MAAM,eAAe;AACrB,MAAM,cAAc;AACpB,MAAM,eAAe;AAErB,SAAS,eAAe,QAAgB,OAAgB,QAAmC;CACzF,OAAO,GAAG,SAAS,OAAO,cAAc,KAAK,CAAC;AAChD;AAEA,SAAS,kBAAkB,OAA+C;CAExE,OADmB,OAAO,KAAK,CAAC,CAAC,WAAW,MAAM,GAAG,KAChC,KAAA;AACvB;AAEA,SAAS,iBAAiB,OAAgF;CACxG,OAAO,MACJ,QAAQ,EAAE,iBAAiB,eAAe,YAAY,eAAe,YAAY,CAAC,CAClF,KAAK,EAAE,QAAQ,IAAI,2BAA2B;EAC7C;EACA;EACA,GAAI,sBAAsB,EAAE,oBAAoB,IAAI,CAAC;CACvD,EAAE,CAAC,CACF,MAAM,MAAM,UAAU,KAAK,OAAO,cAAc,MAAM,MAAM,KAAK,KAAK,GAAG,cAAc,MAAM,EAAE,CAAC;AACrG;AAEA,SAAgB,0BAA0B,eAAuB,QAAmC;CAClG,OAAO,eAAe,aAAa;EAAE,SAAS;EAAG;CAAc,GAAG,MAAM;AAC1E;AAEA,SAAgB,iCAAiC,OAA+B,QAAmC;CACjH,OAAO,eACL,eACA;EACE,SAAS;EACT,aAAa,0BAA0B,MAAM,eAAe,MAAM;EAClE,wBAAwB,MAAM,0BAA0B;EACxD,WAAW,MAAM;EACjB,SAAS,CAAC,GAAG,MAAM,OAAO;EAC1B,SAAS,MAAM,WAAW;EAC1B,SAAS,kBAAkB,MAAM,OAAO,KAAK;EAC7C,YAAY,iBAAiB,MAAM,UAAU;CAC/C,GACA,MACF;AACF;AAEA,SAAgB,iCACd,YACA,QACQ;CACR,OAAO,eACL,cACA;EACE,SAAS;EACT,cAAc,WAAW,gBAAgB;EACzC,OAAO,CAAC,GAAG,WAAW,KAAK;EAC3B,eAAe,CAAC,GAAG,WAAW,aAAa,CAAC,CAAC,MAAM,MAAM,UAAU,KAAK,cAAc,KAAK,CAAC;EAC5F,YAAY,CAAC,GAAG,WAAW,UAAU;EACrC,uBAAuB,WAAW,yBAAyB;EAC3D,eAAe,WAAW,iBAAiB;EAC3C,QAAQ,WAAW,UAAU;EAC7B,wBAAwB,WAAW,0BAA0B;CAC/D,GACA,MACF;AACF;AAEA,SAAgB,kCAAkC,OAAiC,QAAmC;CACpH,OAAO,eACL,cACA;EACE,SAAS;EACT,iBAAiB,MAAM,mBAAmB;EAC1C,cAAc,MAAM,gBAAgB;EACpC,KAAK,MAAM,OAAO;EAClB,SAAS,MAAM,WAAW;EAC1B,WAAW,MAAM,aAAa;CAChC,GACA,MACF;AACF;AAEA,SAAgB,qBACd,iBACA,OACA,kBACA,QACA,iBACQ;CACR,OAAO,eACL,YACA;EACE,SAAS;EACT;EACA;EACA,iBAAiB,mBAAmB;EACpC;CACF,GACA,MACF;AACF"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
let _deepseek_ai_cordis = require("@deepseek-ai/cordis");
|
|
2
|
+
//#region src/services/promptCacheTelemetry/index.ts
|
|
3
|
+
const DOOM_PROMPT_CACHE_TELEMETRY_SERVICE = "doom/prompt-cache-telemetry";
|
|
4
|
+
var PromptCacheTelemetryService = class extends _deepseek_ai_cordis.Service {
|
|
5
|
+
telemetry;
|
|
6
|
+
constructor(context, telemetry) {
|
|
7
|
+
super(context, DOOM_PROMPT_CACHE_TELEMETRY_SERVICE);
|
|
8
|
+
this.telemetry = telemetry;
|
|
9
|
+
}
|
|
10
|
+
snapshot() {
|
|
11
|
+
return this.telemetry.snapshot();
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
function readPromptCacheTelemetry(context) {
|
|
15
|
+
return context.get(DOOM_PROMPT_CACHE_TELEMETRY_SERVICE);
|
|
16
|
+
}
|
|
17
|
+
//#endregion
|
|
18
|
+
exports.DOOM_PROMPT_CACHE_TELEMETRY_SERVICE = DOOM_PROMPT_CACHE_TELEMETRY_SERVICE;
|
|
19
|
+
exports.PromptCacheTelemetryService = PromptCacheTelemetryService;
|
|
20
|
+
exports.readPromptCacheTelemetry = readPromptCacheTelemetry;
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["Service"],"sources":["../../../../src/services/promptCacheTelemetry/index.ts"],"sourcesContent":["import { type Context, Service } from '@deepseek-ai/cordis';\n\nimport type { PromptCacheTelemetryPort, PromptCacheTelemetrySnapshot } from '../../types/cache';\n\nexport const DOOM_PROMPT_CACHE_TELEMETRY_SERVICE = 'doom/prompt-cache-telemetry';\n\nexport class PromptCacheTelemetryService extends Service {\n constructor(\n context: Context,\n private readonly telemetry: PromptCacheTelemetryPort,\n ) {\n super(context, DOOM_PROMPT_CACHE_TELEMETRY_SERVICE);\n }\n\n snapshot(): PromptCacheTelemetrySnapshot {\n return this.telemetry.snapshot();\n }\n}\n\nexport function readPromptCacheTelemetry(context: Context): PromptCacheTelemetryService | undefined {\n return context.get(DOOM_PROMPT_CACHE_TELEMETRY_SERVICE) as PromptCacheTelemetryService | undefined;\n}\n\ndeclare module '@deepseek-ai/cordis' {\n interface Context {\n 'doom/prompt-cache-telemetry': PromptCacheTelemetryService;\n }\n}\n"],"mappings":";;AAIA,MAAa,sCAAsC;AAEnD,IAAa,8BAAb,cAAiDA,oBAAAA,QAAQ;CAGpC;CAFnB,YACE,SACA,WACA;EACA,MAAM,SAAS,mCAAmC;EAFjC,KAAA,YAAA;CAGnB;CAEA,WAAyC;EACvC,OAAO,KAAK,UAAU,SAAS;CACjC;AACF;AAEA,SAAgB,yBAAyB,SAA2D;CAClG,OAAO,QAAQ,IAAI,mCAAmC;AACxD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../../../../src/services/promptCacheTelemetry/index.ts"],"mappings":";;;qBAIa;qBAEA,oCAAoC;mBAG5B;EAFnB,YACE,SAAS,SACQ,WAAW;EAK9B,YAAY;;wBAKE,yBAAyB,SAAS,UAAU;;YAKhD;IACR,+BAA+B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../../../../src/services/promptCacheTelemetry/index.ts"],"mappings":";;;qBAIa;qBAEA,oCAAoC;mBAG5B;EAFnB,YACE,SAAS,SACQ,WAAW;EAK9B,YAAY;;wBAKE,yBAAyB,SAAS,UAAU;;YAKhD;IACR,+BAA+B"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Service } from "@deepseek-ai/cordis";
|
|
2
|
+
//#region src/services/promptCacheTelemetry/index.ts
|
|
3
|
+
const DOOM_PROMPT_CACHE_TELEMETRY_SERVICE = "doom/prompt-cache-telemetry";
|
|
4
|
+
var PromptCacheTelemetryService = class extends Service {
|
|
5
|
+
telemetry;
|
|
6
|
+
constructor(context, telemetry) {
|
|
7
|
+
super(context, DOOM_PROMPT_CACHE_TELEMETRY_SERVICE);
|
|
8
|
+
this.telemetry = telemetry;
|
|
9
|
+
}
|
|
10
|
+
snapshot() {
|
|
11
|
+
return this.telemetry.snapshot();
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
function readPromptCacheTelemetry(context) {
|
|
15
|
+
return context.get(DOOM_PROMPT_CACHE_TELEMETRY_SERVICE);
|
|
16
|
+
}
|
|
17
|
+
//#endregion
|
|
18
|
+
export { DOOM_PROMPT_CACHE_TELEMETRY_SERVICE, PromptCacheTelemetryService, readPromptCacheTelemetry };
|
|
19
|
+
|
|
20
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/services/promptCacheTelemetry/index.ts"],"sourcesContent":["import { type Context, Service } from '@deepseek-ai/cordis';\n\nimport type { PromptCacheTelemetryPort, PromptCacheTelemetrySnapshot } from '../../types/cache';\n\nexport const DOOM_PROMPT_CACHE_TELEMETRY_SERVICE = 'doom/prompt-cache-telemetry';\n\nexport class PromptCacheTelemetryService extends Service {\n constructor(\n context: Context,\n private readonly telemetry: PromptCacheTelemetryPort,\n ) {\n super(context, DOOM_PROMPT_CACHE_TELEMETRY_SERVICE);\n }\n\n snapshot(): PromptCacheTelemetrySnapshot {\n return this.telemetry.snapshot();\n }\n}\n\nexport function readPromptCacheTelemetry(context: Context): PromptCacheTelemetryService | undefined {\n return context.get(DOOM_PROMPT_CACHE_TELEMETRY_SERVICE) as PromptCacheTelemetryService | undefined;\n}\n\ndeclare module '@deepseek-ai/cordis' {\n interface Context {\n 'doom/prompt-cache-telemetry': PromptCacheTelemetryService;\n }\n}\n"],"mappings":";;AAIA,MAAa,sCAAsC;AAEnD,IAAa,8BAAb,cAAiD,QAAQ;CAGpC;CAFnB,YACE,SACA,WACA;EACA,MAAM,SAAS,mCAAmC;EAFjC,KAAA,YAAA;CAGnB;CAEA,WAAyC;EACvC,OAAO,KAAK,UAAU,SAAS;CACjC;AACF;AAEA,SAAgB,yBAAyB,SAA2D;CAClG,OAAO,QAAQ,IAAI,mCAAmC;AACxD"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
//#region src/services/providerPolicy/index.ts
|
|
2
|
+
const ROUTING_KEY_APIS = /* @__PURE__ */ new Set([
|
|
3
|
+
"openai-completions",
|
|
4
|
+
"openai-responses",
|
|
5
|
+
"openai-codex-responses",
|
|
6
|
+
"azure-openai-responses"
|
|
7
|
+
]);
|
|
8
|
+
const MARKER_APIS = /* @__PURE__ */ new Set(["anthropic-messages", "bedrock-converse-stream"]);
|
|
9
|
+
const AUTOMATIC_APIS = /* @__PURE__ */ new Set([
|
|
10
|
+
"google-generative-ai",
|
|
11
|
+
"google-vertex",
|
|
12
|
+
"google-vertex-anthropic"
|
|
13
|
+
]);
|
|
14
|
+
function isRecord(value) {
|
|
15
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
16
|
+
}
|
|
17
|
+
function classifyPromptCacheCapability(model) {
|
|
18
|
+
if (model.api === "openai-responses" || model.api === "openai-completions") return model.virtualProvider === "openai" ? "key-and-long-retention" : "key-only";
|
|
19
|
+
if (model.api && ROUTING_KEY_APIS.has(model.api)) return "key-only";
|
|
20
|
+
if (model.api && MARKER_APIS.has(model.api)) return "marker-only";
|
|
21
|
+
if (model.api && AUTOMATIC_APIS.has(model.api)) return "automatic";
|
|
22
|
+
return "unknown";
|
|
23
|
+
}
|
|
24
|
+
function rewritePromptCacheKey(payload, api, key, enabled) {
|
|
25
|
+
if (!enabled || !api || !ROUTING_KEY_APIS.has(api) || !isRecord(payload)) return void 0;
|
|
26
|
+
const current = payload.prompt_cache_key;
|
|
27
|
+
if (typeof current !== "string" || !current.trim() || current === key) return void 0;
|
|
28
|
+
return {
|
|
29
|
+
...payload,
|
|
30
|
+
prompt_cache_key: key
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
function requestedPromptCacheRetention(payload) {
|
|
34
|
+
if (!isRecord(payload)) return void 0;
|
|
35
|
+
const retention = payload.prompt_cache_retention;
|
|
36
|
+
return typeof retention === "string" && retention.trim() ? retention.trim() : void 0;
|
|
37
|
+
}
|
|
38
|
+
//#endregion
|
|
39
|
+
exports.classifyPromptCacheCapability = classifyPromptCacheCapability;
|
|
40
|
+
exports.requestedPromptCacheRetention = requestedPromptCacheRetention;
|
|
41
|
+
exports.rewritePromptCacheKey = rewritePromptCacheKey;
|
|
42
|
+
|
|
43
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","names":[],"sources":["../../../../src/services/providerPolicy/index.ts"],"sourcesContent":["import type { PromptCacheCapabilityClass, PromptCacheModelIdentity } from '../../types/cache';\n\nconst ROUTING_KEY_APIS = new Set([\n 'openai-completions',\n 'openai-responses',\n 'openai-codex-responses',\n 'azure-openai-responses',\n]);\n\nconst MARKER_APIS = new Set(['anthropic-messages', 'bedrock-converse-stream']);\nconst AUTOMATIC_APIS = new Set(['google-generative-ai', 'google-vertex', 'google-vertex-anthropic']);\n\nfunction isRecord(value: unknown): value is Readonly<Record<string, unknown>> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nexport function classifyPromptCacheCapability(model: PromptCacheModelIdentity): PromptCacheCapabilityClass {\n if (model.api === 'openai-responses' || model.api === 'openai-completions') {\n return model.virtualProvider === 'openai' ? 'key-and-long-retention' : 'key-only';\n }\n if (model.api && ROUTING_KEY_APIS.has(model.api)) return 'key-only';\n if (model.api && MARKER_APIS.has(model.api)) return 'marker-only';\n if (model.api && AUTOMATIC_APIS.has(model.api)) return 'automatic';\n return 'unknown';\n}\n\nexport function rewritePromptCacheKey(\n payload: unknown,\n api: string | undefined,\n key: string,\n enabled: boolean,\n): Record<string, unknown> | undefined {\n if (!enabled || !api || !ROUTING_KEY_APIS.has(api) || !isRecord(payload)) return undefined;\n const current = payload.prompt_cache_key;\n if (typeof current !== 'string' || !current.trim() || current === key) return undefined;\n return { ...payload, prompt_cache_key: key };\n}\n\nexport function requestedPromptCacheRetention(payload: unknown): string | undefined {\n if (!isRecord(payload)) return undefined;\n const retention = payload.prompt_cache_retention;\n return typeof retention === 'string' && retention.trim() ? retention.trim() : undefined;\n}\n"],"mappings":";AAEA,MAAM,mCAAmB,IAAI,IAAI;CAC/B;CACA;CACA;CACA;AACF,CAAC;AAED,MAAM,8BAAc,IAAI,IAAI,CAAC,sBAAsB,yBAAyB,CAAC;AAC7E,MAAM,iCAAiB,IAAI,IAAI;CAAC;CAAwB;CAAiB;AAAyB,CAAC;AAEnG,SAAS,SAAS,OAA4D;CAC5E,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAC5E;AAEA,SAAgB,8BAA8B,OAA6D;CACzG,IAAI,MAAM,QAAQ,sBAAsB,MAAM,QAAQ,sBACpD,OAAO,MAAM,oBAAoB,WAAW,2BAA2B;CAEzE,IAAI,MAAM,OAAO,iBAAiB,IAAI,MAAM,GAAG,GAAG,OAAO;CACzD,IAAI,MAAM,OAAO,YAAY,IAAI,MAAM,GAAG,GAAG,OAAO;CACpD,IAAI,MAAM,OAAO,eAAe,IAAI,MAAM,GAAG,GAAG,OAAO;CACvD,OAAO;AACT;AAEA,SAAgB,sBACd,SACA,KACA,KACA,SACqC;CACrC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,iBAAiB,IAAI,GAAG,KAAK,CAAC,SAAS,OAAO,GAAG,OAAO,KAAA;CACjF,MAAM,UAAU,QAAQ;CACxB,IAAI,OAAO,YAAY,YAAY,CAAC,QAAQ,KAAK,KAAK,YAAY,KAAK,OAAO,KAAA;CAC9E,OAAO;EAAE,GAAG;EAAS,kBAAkB;CAAI;AAC7C;AAEA,SAAgB,8BAA8B,SAAsC;CAClF,IAAI,CAAC,SAAS,OAAO,GAAG,OAAO,KAAA;CAC/B,MAAM,YAAY,QAAQ;CAC1B,OAAO,OAAO,cAAc,YAAY,UAAU,KAAK,IAAI,UAAU,KAAK,IAAI,KAAA;AAChF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../../../../src/services/providerPolicy/index.ts"],"mappings":";;wBAgBgB,8BAA8B,OAAO,2BAA2B;wBAUhE,sBACd,kBACA,yBACA,aACA,mBACC;wBAOa,8BAA8B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../../../../src/services/providerPolicy/index.ts"],"mappings":";;wBAgBgB,8BAA8B,OAAO,2BAA2B;wBAUhE,sBACd,kBACA,yBACA,aACA,mBACC;wBAOa,8BAA8B"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
//#region src/services/providerPolicy/index.ts
|
|
2
|
+
const ROUTING_KEY_APIS = /* @__PURE__ */ new Set([
|
|
3
|
+
"openai-completions",
|
|
4
|
+
"openai-responses",
|
|
5
|
+
"openai-codex-responses",
|
|
6
|
+
"azure-openai-responses"
|
|
7
|
+
]);
|
|
8
|
+
const MARKER_APIS = /* @__PURE__ */ new Set(["anthropic-messages", "bedrock-converse-stream"]);
|
|
9
|
+
const AUTOMATIC_APIS = /* @__PURE__ */ new Set([
|
|
10
|
+
"google-generative-ai",
|
|
11
|
+
"google-vertex",
|
|
12
|
+
"google-vertex-anthropic"
|
|
13
|
+
]);
|
|
14
|
+
function isRecord(value) {
|
|
15
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
16
|
+
}
|
|
17
|
+
function classifyPromptCacheCapability(model) {
|
|
18
|
+
if (model.api === "openai-responses" || model.api === "openai-completions") return model.virtualProvider === "openai" ? "key-and-long-retention" : "key-only";
|
|
19
|
+
if (model.api && ROUTING_KEY_APIS.has(model.api)) return "key-only";
|
|
20
|
+
if (model.api && MARKER_APIS.has(model.api)) return "marker-only";
|
|
21
|
+
if (model.api && AUTOMATIC_APIS.has(model.api)) return "automatic";
|
|
22
|
+
return "unknown";
|
|
23
|
+
}
|
|
24
|
+
function rewritePromptCacheKey(payload, api, key, enabled) {
|
|
25
|
+
if (!enabled || !api || !ROUTING_KEY_APIS.has(api) || !isRecord(payload)) return void 0;
|
|
26
|
+
const current = payload.prompt_cache_key;
|
|
27
|
+
if (typeof current !== "string" || !current.trim() || current === key) return void 0;
|
|
28
|
+
return {
|
|
29
|
+
...payload,
|
|
30
|
+
prompt_cache_key: key
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
function requestedPromptCacheRetention(payload) {
|
|
34
|
+
if (!isRecord(payload)) return void 0;
|
|
35
|
+
const retention = payload.prompt_cache_retention;
|
|
36
|
+
return typeof retention === "string" && retention.trim() ? retention.trim() : void 0;
|
|
37
|
+
}
|
|
38
|
+
//#endregion
|
|
39
|
+
export { classifyPromptCacheCapability, requestedPromptCacheRetention, rewritePromptCacheKey };
|
|
40
|
+
|
|
41
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/services/providerPolicy/index.ts"],"sourcesContent":["import type { PromptCacheCapabilityClass, PromptCacheModelIdentity } from '../../types/cache';\n\nconst ROUTING_KEY_APIS = new Set([\n 'openai-completions',\n 'openai-responses',\n 'openai-codex-responses',\n 'azure-openai-responses',\n]);\n\nconst MARKER_APIS = new Set(['anthropic-messages', 'bedrock-converse-stream']);\nconst AUTOMATIC_APIS = new Set(['google-generative-ai', 'google-vertex', 'google-vertex-anthropic']);\n\nfunction isRecord(value: unknown): value is Readonly<Record<string, unknown>> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nexport function classifyPromptCacheCapability(model: PromptCacheModelIdentity): PromptCacheCapabilityClass {\n if (model.api === 'openai-responses' || model.api === 'openai-completions') {\n return model.virtualProvider === 'openai' ? 'key-and-long-retention' : 'key-only';\n }\n if (model.api && ROUTING_KEY_APIS.has(model.api)) return 'key-only';\n if (model.api && MARKER_APIS.has(model.api)) return 'marker-only';\n if (model.api && AUTOMATIC_APIS.has(model.api)) return 'automatic';\n return 'unknown';\n}\n\nexport function rewritePromptCacheKey(\n payload: unknown,\n api: string | undefined,\n key: string,\n enabled: boolean,\n): Record<string, unknown> | undefined {\n if (!enabled || !api || !ROUTING_KEY_APIS.has(api) || !isRecord(payload)) return undefined;\n const current = payload.prompt_cache_key;\n if (typeof current !== 'string' || !current.trim() || current === key) return undefined;\n return { ...payload, prompt_cache_key: key };\n}\n\nexport function requestedPromptCacheRetention(payload: unknown): string | undefined {\n if (!isRecord(payload)) return undefined;\n const retention = payload.prompt_cache_retention;\n return typeof retention === 'string' && retention.trim() ? retention.trim() : undefined;\n}\n"],"mappings":";AAEA,MAAM,mCAAmB,IAAI,IAAI;CAC/B;CACA;CACA;CACA;AACF,CAAC;AAED,MAAM,8BAAc,IAAI,IAAI,CAAC,sBAAsB,yBAAyB,CAAC;AAC7E,MAAM,iCAAiB,IAAI,IAAI;CAAC;CAAwB;CAAiB;AAAyB,CAAC;AAEnG,SAAS,SAAS,OAA4D;CAC5E,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAC5E;AAEA,SAAgB,8BAA8B,OAA6D;CACzG,IAAI,MAAM,QAAQ,sBAAsB,MAAM,QAAQ,sBACpD,OAAO,MAAM,oBAAoB,WAAW,2BAA2B;CAEzE,IAAI,MAAM,OAAO,iBAAiB,IAAI,MAAM,GAAG,GAAG,OAAO;CACzD,IAAI,MAAM,OAAO,YAAY,IAAI,MAAM,GAAG,GAAG,OAAO;CACpD,IAAI,MAAM,OAAO,eAAe,IAAI,MAAM,GAAG,GAAG,OAAO;CACvD,OAAO;AACT;AAEA,SAAgB,sBACd,SACA,KACA,KACA,SACqC;CACrC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,iBAAiB,IAAI,GAAG,KAAK,CAAC,SAAS,OAAO,GAAG,OAAO,KAAA;CACjF,MAAM,UAAU,QAAQ;CACxB,IAAI,OAAO,YAAY,YAAY,CAAC,QAAQ,KAAK,KAAK,YAAY,KAAK,OAAO,KAAA;CAC9E,OAAO;EAAE,GAAG;EAAS,kBAAkB;CAAI;AAC7C;AAEA,SAAgB,8BAA8B,SAAsC;CAClF,IAAI,CAAC,SAAS,OAAO,GAAG,OAAO,KAAA;CAC/B,MAAM,YAAY,QAAQ;CAC1B,OAAO,OAAO,cAAc,YAAY,UAAU,KAAK,IAAI,UAAU,KAAK,IAAI,KAAA;AAChF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.cts","names":[],"sources":["../../../src/types/cache.ts"],"mappings":";YAAY;iBAOK;WACN;WACA;WACA;WACA;;iBAGM;WACN;WACA;WACA;WACA;WACA;WACA;WACA,qBAAqB;;iBAGf;WACN;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;iBAGM;WACN;WACA;WACA;WACA;WACA;;iBAGM;GACd;;iBAGc;WACN;WACA;WACA;;iBAGM,+BAA+B;WACrC;WACA;WACA;;iBAGM;WACN,YAAY;WACZ;WACA;WACA;WACA;;iBAGM,qCAAqC;WAC3C;WACA,uBAAuB;WACvB,kBAAkB;;iBAGZ;EACf,aAAa,QAAQ;EACrB,QAAQ,OAAO,kBAAkB;EACjC,YAAY;EACZ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.mts","names":[],"sources":["../../../src/types/cache.ts"],"mappings":";YAAY;iBAOK;WACN;WACA;WACA;WACA;;iBAGM;WACN;WACA;WACA;WACA;WACA;WACA;WACA,qBAAqB;;iBAGf;WACN;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;iBAGM;WACN;WACA;WACA;WACA;WACA;;iBAGM;GACd;;iBAGc;WACN;WACA;WACA;;iBAGM,+BAA+B;WACrC;WACA;WACA;;iBAGM;WACN,YAAY;WACZ;WACA;WACA;WACA;;iBAGM,qCAAqC;WAC3C;WACA,uBAAuB;WACvB,kBAAkB;;iBAGZ;EACf,aAAa,QAAQ;EACrB,QAAQ,OAAO,kBAAkB;EACjC,YAAY;EACZ"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agimon-ai/doompi-cache",
|
|
3
|
-
"version": "0.0.1-alpha.
|
|
3
|
+
"version": "0.0.1-alpha.39",
|
|
4
4
|
"description": "Provider prompt cache policy and deterministic routing for DoomPi",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"repository": {
|
|
23
23
|
"type": "git",
|
|
24
24
|
"url": "git+https://github.com/AgiFlow/doompi.git",
|
|
25
|
-
"directory": "packages/
|
|
25
|
+
"directory": "packages/foundations/doompi-cache"
|
|
26
26
|
},
|
|
27
27
|
"files": [
|
|
28
28
|
"dist",
|
|
@@ -63,20 +63,21 @@
|
|
|
63
63
|
"access": "public"
|
|
64
64
|
},
|
|
65
65
|
"dependencies": {
|
|
66
|
+
"@agimon-ai/doompi-config": "0.0.1-alpha.72",
|
|
67
|
+
"@agimon-ai/doompi-core": "0.0.1-alpha.73",
|
|
68
|
+
"@agimon-ai/doompi-minor-mode": "0.0.1-alpha.73",
|
|
66
69
|
"@deepseek-ai/cordis": "4.0.2",
|
|
67
|
-
"pi-cache-optimizer": "2.8.
|
|
68
|
-
"@agimon-ai/doompi-config": "0.0.1-alpha.70",
|
|
69
|
-
"@agimon-ai/doompi-core": "0.0.1-alpha.71",
|
|
70
|
-
"@agimon-ai/doompi-minor-mode": "0.0.1-alpha.71"
|
|
70
|
+
"pi-cache-optimizer": "2.8.7"
|
|
71
71
|
},
|
|
72
72
|
"devDependencies": {
|
|
73
|
+
"@agimon-ai/doompi-build": "0.0.1-alpha.2",
|
|
74
|
+
"@agimon-ai/vibe-lint-plugin-doom-extension": "0.0.1-alpha.68",
|
|
73
75
|
"@earendil-works/pi-coding-agent": "0.85.1",
|
|
74
|
-
"@types/node": "26.
|
|
76
|
+
"@types/node": "26.5.1",
|
|
75
77
|
"@vitest/coverage-v8": "5.0.0",
|
|
76
78
|
"tsdown": "0.23.0",
|
|
77
79
|
"typescript": "7.0.2",
|
|
78
|
-
"vitest": "5.0.0"
|
|
79
|
-
"@agimon-ai/vibe-lint-plugin-doom-extension": "0.0.1-alpha.66"
|
|
80
|
+
"vitest": "5.0.0"
|
|
80
81
|
},
|
|
81
82
|
"peerDependencies": {
|
|
82
83
|
"@earendil-works/pi-coding-agent": "0.85.1"
|
|
@@ -90,7 +91,7 @@
|
|
|
90
91
|
"node": ">=22.19.0"
|
|
91
92
|
},
|
|
92
93
|
"doompiServer": {
|
|
93
|
-
"entry": "./
|
|
94
|
+
"entry": "./generated/server.ts",
|
|
94
95
|
"dist": "./dist/extensions/server.mjs",
|
|
95
96
|
"scopes": [
|
|
96
97
|
"session"
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
exports.DOOMPI_PROMPT_CACHE_CHILD_PROJECTION_ENV=`DOOMPI_PROMPT_CACHE_CHILD_PROJECTION`,exports.DOOMPI_PROMPT_CACHE_PARENT_NAMESPACE_ENV=`DOOMPI_PROMPT_CACHE_PARENT_NAMESPACE`,exports.DOOMPI_PROMPT_CACHE_ROOT_SESSION_ENV=`DOOMPI_PROMPT_CACHE_ROOT_SESSION`,exports.PI_CACHE_RETENTION_ENV=`PI_CACHE_RETENTION`,exports.PI_CACHE_RETENTION_LONG=`long`;
|
|
2
|
-
//# sourceMappingURL=environment.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"environment.cjs","names":[],"sources":["../../src/constants/environment.ts"],"sourcesContent":["export const DOOMPI_PROMPT_CACHE_PARENT_NAMESPACE_ENV = 'DOOMPI_PROMPT_CACHE_PARENT_NAMESPACE';\nexport const DOOMPI_PROMPT_CACHE_ROOT_SESSION_ENV = 'DOOMPI_PROMPT_CACHE_ROOT_SESSION';\nexport const DOOMPI_PROMPT_CACHE_CHILD_PROJECTION_ENV = 'DOOMPI_PROMPT_CACHE_CHILD_PROJECTION';\nexport const PI_CACHE_RETENTION_ENV = 'PI_CACHE_RETENTION';\nexport const PI_CACHE_RETENTION_LONG = 'long';\n"],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"environment.d.cts","names":[],"sources":["../../src/constants/environment.ts"],"mappings":";qBAAa;qBACA;qBACA;qBACA;qBACA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"environment.d.mts","names":[],"sources":["../../src/constants/environment.ts"],"mappings":";qBAAa;qBACA;qBACA;qBACA;qBACA"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const e=`DOOMPI_PROMPT_CACHE_PARENT_NAMESPACE`,t=`DOOMPI_PROMPT_CACHE_ROOT_SESSION`,n=`DOOMPI_PROMPT_CACHE_CHILD_PROJECTION`,r=`PI_CACHE_RETENTION`,i=`long`;export{n as DOOMPI_PROMPT_CACHE_CHILD_PROJECTION_ENV,e as DOOMPI_PROMPT_CACHE_PARENT_NAMESPACE_ENV,t as DOOMPI_PROMPT_CACHE_ROOT_SESSION_ENV,r as PI_CACHE_RETENTION_ENV,i as PI_CACHE_RETENTION_LONG};
|
|
2
|
-
//# sourceMappingURL=environment.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"environment.mjs","names":[],"sources":["../../src/constants/environment.ts"],"sourcesContent":["export const DOOMPI_PROMPT_CACHE_PARENT_NAMESPACE_ENV = 'DOOMPI_PROMPT_CACHE_PARENT_NAMESPACE';\nexport const DOOMPI_PROMPT_CACHE_ROOT_SESSION_ENV = 'DOOMPI_PROMPT_CACHE_ROOT_SESSION';\nexport const DOOMPI_PROMPT_CACHE_CHILD_PROJECTION_ENV = 'DOOMPI_PROMPT_CACHE_CHILD_PROJECTION';\nexport const PI_CACHE_RETENTION_ENV = 'PI_CACHE_RETENTION';\nexport const PI_CACHE_RETENTION_LONG = 'long';\n"],"mappings":"AAAA,MAAa,EAA2C,uCAC3C,EAAuC,mCACvC,EAA2C,uCAC3C,EAAyB,qBACzB,EAA0B"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const e=require("../services/digest/index.cjs"),t=require("../services/canonical/index.cjs"),n=require("../services/namespace/index.cjs"),r=require("../services/providerPolicy/index.cjs");function i(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:{}}function a(e,t){let n=i(t);return{virtualProvider:e?.provider,virtualModel:e?.id,api:typeof n.api==`string`?n.api:void 0,wireModel:typeof n.model==`string`?n.model:void 0}}function o(n){return`dph_${e.sha256Base64Url(t.canonicalJson({version:1,session:n.sessionId,selection:n.selection}))}`}const s={name:`doompi/prompt-cache-selection`,kind:`context`,read:e=>JSON.stringify({sessionId:e.sessionId,selection:e.selection,model:e.model},null,2)},c=[{event:`before_provider_request`,handle(t,s){let c=i(t.payload),l=a(s.model,c),u=n.createPromptCacheModelFingerprint(l,e.sha256Base64Url),d=n.createPromptCacheKey(o({sessionId:s.sessionId,selection:s.selection}),`parent`,u,e.sha256Base64Url),f=r.rewritePromptCacheKey(c,l.api,d,!0);return f===void 0?void 0:{payload:f}}},{event:`session_shutdown`,handle(e,t){t.client.setStatus(`doom-cache`,void 0)}}];exports.cacheHooks=c,exports.cacheResource=s;
|
|
2
|
-
//# sourceMappingURL=cacheHooks.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cacheHooks.cjs","names":["sha256Base64Url","canonicalJson","createPromptCacheModelFingerprint","createPromptCacheKey","rewritePromptCacheKey"],"sources":["../../src/controllers/cacheHooks.ts"],"sourcesContent":["import { type DoomHeadlessHook, type DoomHeadlessResource } from '@agimon-ai/doompi-core/headless';\n\nimport { canonicalJson } from '../services/canonical';\nimport { sha256Base64Url } from '../services/digest';\nimport { createPromptCacheKey, createPromptCacheModelFingerprint } from '../services/namespace';\nimport { rewritePromptCacheKey } from '../services/providerPolicy';\nimport type { PromptCacheModelIdentity } from '../types/cache';\n\nfunction record(value: unknown): Readonly<Record<string, unknown>> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n ? (value as Readonly<Record<string, unknown>>)\n : {};\n}\n\nfunction modelIdentity(\n model: { provider: string; id: string } | undefined,\n payload: unknown,\n): PromptCacheModelIdentity {\n const request = record(payload);\n return {\n virtualProvider: model?.provider,\n virtualModel: model?.id,\n api: typeof request.api === 'string' ? request.api : undefined,\n wireModel: typeof request.model === 'string' ? request.model : undefined,\n };\n}\n\nfunction cacheNamespace(context: { sessionId: string; selection: Record<string, unknown> }): string {\n return `dph_${sha256Base64Url(canonicalJson({ version: 1, session: context.sessionId, selection: context.selection }))}`;\n}\n\nexport const cacheResource: DoomHeadlessResource = {\n name: 'doompi/prompt-cache-selection',\n kind: 'context',\n read: (execution) =>\n JSON.stringify(\n {\n sessionId: execution.sessionId,\n selection: execution.selection,\n model: execution.model,\n },\n null,\n 2,\n ),\n};\n\nexport const cacheHooks: DoomHeadlessHook[] = [\n {\n event: 'before_provider_request',\n handle(event, execution) {\n const payload = record(event.payload);\n const identity = modelIdentity(execution.model, payload);\n const modelFingerprint = createPromptCacheModelFingerprint(identity, sha256Base64Url);\n const key = createPromptCacheKey(\n cacheNamespace({\n sessionId: execution.sessionId,\n selection: execution.selection as unknown as Record<string, unknown>,\n }),\n 'parent',\n modelFingerprint,\n sha256Base64Url,\n );\n const rewritten = rewritePromptCacheKey(payload, identity.api, key, true);\n return rewritten === undefined ? undefined : { payload: rewritten };\n },\n },\n {\n event: 'session_shutdown',\n handle(_event, execution) {\n execution.client.setStatus('doom-cache', undefined);\n },\n },\n];\n"],"mappings":"4LAQA,SAAS,EAAO,EAAmD,CACjE,OAAO,OAAO,GAAU,UAAY,GAAkB,CAAC,MAAM,QAAQ,CAAK,EACrE,EACD,CAAC,CACP,CAEA,SAAS,EACP,EACA,EAC0B,CAC1B,IAAM,EAAU,EAAO,CAAO,EAC9B,MAAO,CACL,gBAAiB,GAAO,SACxB,aAAc,GAAO,GACrB,IAAK,OAAO,EAAQ,KAAQ,SAAW,EAAQ,IAAM,IAAA,GACrD,UAAW,OAAO,EAAQ,OAAU,SAAW,EAAQ,MAAQ,IAAA,EACjE,CACF,CAEA,SAAS,EAAe,EAA4E,CAClG,MAAO,OAAOA,EAAAA,gBAAgBC,EAAAA,cAAc,CAAE,QAAS,EAAG,QAAS,EAAQ,UAAW,UAAW,EAAQ,SAAU,CAAC,CAAC,GACvH,CAEA,MAAa,EAAsC,CACjD,KAAM,gCACN,KAAM,UACN,KAAO,GACL,KAAK,UACH,CACE,UAAW,EAAU,UACrB,UAAW,EAAU,UACrB,MAAO,EAAU,KACnB,EACA,KACA,CACF,CACJ,EAEa,EAAiC,CAC5C,CACE,MAAO,0BACP,OAAO,EAAO,EAAW,CACvB,IAAM,EAAU,EAAO,EAAM,OAAO,EAC9B,EAAW,EAAc,EAAU,MAAO,CAAO,EACjD,EAAmBC,EAAAA,kCAAkC,EAAUF,EAAAA,eAAe,EAC9E,EAAMG,EAAAA,qBACV,EAAe,CACb,UAAW,EAAU,UACrB,UAAW,EAAU,SACvB,CAAC,EACD,SACA,EACAH,EAAAA,eACF,EACM,EAAYI,EAAAA,sBAAsB,EAAS,EAAS,IAAK,EAAK,EAAI,EACxE,OAAO,IAAc,IAAA,GAAY,IAAA,GAAY,CAAE,QAAS,CAAU,CACpE,CACF,EACA,CACE,MAAO,mBACP,OAAO,EAAQ,EAAW,CACxB,EAAU,OAAO,UAAU,aAAc,IAAA,EAAS,CACpD,CACF,CACF"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{sha256Base64Url as e}from"../services/digest/index.mjs";import{canonicalJson as t}from"../services/canonical/index.mjs";import{createPromptCacheKey as n,createPromptCacheModelFingerprint as r}from"../services/namespace/index.mjs";import{rewritePromptCacheKey as i}from"../services/providerPolicy/index.mjs";function a(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:{}}function o(e,t){let n=a(t);return{virtualProvider:e?.provider,virtualModel:e?.id,api:typeof n.api==`string`?n.api:void 0,wireModel:typeof n.model==`string`?n.model:void 0}}function s(n){return`dph_${e(t({version:1,session:n.sessionId,selection:n.selection}))}`}const c={name:`doompi/prompt-cache-selection`,kind:`context`,read:e=>JSON.stringify({sessionId:e.sessionId,selection:e.selection,model:e.model},null,2)},l=[{event:`before_provider_request`,handle(t,c){let l=a(t.payload),u=o(c.model,l),d=r(u,e),f=n(s({sessionId:c.sessionId,selection:c.selection}),`parent`,d,e),p=i(l,u.api,f,!0);return p===void 0?void 0:{payload:p}}},{event:`session_shutdown`,handle(e,t){t.client.setStatus(`doom-cache`,void 0)}}];export{l as cacheHooks,c as cacheResource};
|
|
2
|
-
//# sourceMappingURL=cacheHooks.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cacheHooks.mjs","names":[],"sources":["../../src/controllers/cacheHooks.ts"],"sourcesContent":["import { type DoomHeadlessHook, type DoomHeadlessResource } from '@agimon-ai/doompi-core/headless';\n\nimport { canonicalJson } from '../services/canonical';\nimport { sha256Base64Url } from '../services/digest';\nimport { createPromptCacheKey, createPromptCacheModelFingerprint } from '../services/namespace';\nimport { rewritePromptCacheKey } from '../services/providerPolicy';\nimport type { PromptCacheModelIdentity } from '../types/cache';\n\nfunction record(value: unknown): Readonly<Record<string, unknown>> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n ? (value as Readonly<Record<string, unknown>>)\n : {};\n}\n\nfunction modelIdentity(\n model: { provider: string; id: string } | undefined,\n payload: unknown,\n): PromptCacheModelIdentity {\n const request = record(payload);\n return {\n virtualProvider: model?.provider,\n virtualModel: model?.id,\n api: typeof request.api === 'string' ? request.api : undefined,\n wireModel: typeof request.model === 'string' ? request.model : undefined,\n };\n}\n\nfunction cacheNamespace(context: { sessionId: string; selection: Record<string, unknown> }): string {\n return `dph_${sha256Base64Url(canonicalJson({ version: 1, session: context.sessionId, selection: context.selection }))}`;\n}\n\nexport const cacheResource: DoomHeadlessResource = {\n name: 'doompi/prompt-cache-selection',\n kind: 'context',\n read: (execution) =>\n JSON.stringify(\n {\n sessionId: execution.sessionId,\n selection: execution.selection,\n model: execution.model,\n },\n null,\n 2,\n ),\n};\n\nexport const cacheHooks: DoomHeadlessHook[] = [\n {\n event: 'before_provider_request',\n handle(event, execution) {\n const payload = record(event.payload);\n const identity = modelIdentity(execution.model, payload);\n const modelFingerprint = createPromptCacheModelFingerprint(identity, sha256Base64Url);\n const key = createPromptCacheKey(\n cacheNamespace({\n sessionId: execution.sessionId,\n selection: execution.selection as unknown as Record<string, unknown>,\n }),\n 'parent',\n modelFingerprint,\n sha256Base64Url,\n );\n const rewritten = rewritePromptCacheKey(payload, identity.api, key, true);\n return rewritten === undefined ? undefined : { payload: rewritten };\n },\n },\n {\n event: 'session_shutdown',\n handle(_event, execution) {\n execution.client.setStatus('doom-cache', undefined);\n },\n },\n];\n"],"mappings":"0TAQA,SAAS,EAAO,EAAmD,CACjE,OAAO,OAAO,GAAU,UAAY,GAAkB,CAAC,MAAM,QAAQ,CAAK,EACrE,EACD,CAAC,CACP,CAEA,SAAS,EACP,EACA,EAC0B,CAC1B,IAAM,EAAU,EAAO,CAAO,EAC9B,MAAO,CACL,gBAAiB,GAAO,SACxB,aAAc,GAAO,GACrB,IAAK,OAAO,EAAQ,KAAQ,SAAW,EAAQ,IAAM,IAAA,GACrD,UAAW,OAAO,EAAQ,OAAU,SAAW,EAAQ,MAAQ,IAAA,EACjE,CACF,CAEA,SAAS,EAAe,EAA4E,CAClG,MAAO,OAAO,EAAgB,EAAc,CAAE,QAAS,EAAG,QAAS,EAAQ,UAAW,UAAW,EAAQ,SAAU,CAAC,CAAC,GACvH,CAEA,MAAa,EAAsC,CACjD,KAAM,gCACN,KAAM,UACN,KAAO,GACL,KAAK,UACH,CACE,UAAW,EAAU,UACrB,UAAW,EAAU,UACrB,MAAO,EAAU,KACnB,EACA,KACA,CACF,CACJ,EAEa,EAAiC,CAC5C,CACE,MAAO,0BACP,OAAO,EAAO,EAAW,CACvB,IAAM,EAAU,EAAO,EAAM,OAAO,EAC9B,EAAW,EAAc,EAAU,MAAO,CAAO,EACjD,EAAmB,EAAkC,EAAU,CAAe,EAC9E,EAAM,EACV,EAAe,CACb,UAAW,EAAU,UACrB,UAAW,EAAU,SACvB,CAAC,EACD,SACA,EACA,CACF,EACM,EAAY,EAAsB,EAAS,EAAS,IAAK,EAAK,EAAI,EACxE,OAAO,IAAc,IAAA,GAAY,IAAA,GAAY,CAAE,QAAS,CAAU,CACpE,CACF,EACA,CACE,MAAO,mBACP,OAAO,EAAQ,EAAW,CACxB,EAAU,OAAO,UAAU,aAAc,IAAA,EAAS,CACpD,CACF,CACF"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
var e=class{#e;#t={capability:`unknown`};#n=[];constructor(e=64){if(!Number.isInteger(e)||e<1)throw Error(`Prompt cache telemetry limit must be a positive integer.`);this.#e=e}beginRequest(e){this.#t={...e}}observe(e,t){let n=this.#t.namespace,r=this.#t.modelFingerprint;n&&r&&(this.#n.push({namespace:n,modelFingerprint:r,cacheRead:e.cacheRead,cacheWrite:e.cacheWrite,totalInput:e.totalInput,observedAt:t}),this.#n.length>this.#e&&this.#n.splice(0,this.#n.length-this.#e))}snapshot(){let e=[...this.#n];return{...this.#t,residency:`unknown`,observations:e,...e.length>0?{lastObservation:e.at(-1)}:{}}}reset(){this.#t={capability:`unknown`},this.#n=[]}};exports.PromptCacheTelemetry=e;
|
|
2
|
-
//# sourceMappingURL=promptCacheTelemetry.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"promptCacheTelemetry.cjs","names":[],"sources":["../../src/models/promptCacheTelemetry.ts"],"sourcesContent":["import type {\n PromptCacheObservation,\n PromptCacheRequestStatus,\n PromptCacheTelemetryPort,\n PromptCacheTelemetrySnapshot,\n PromptCacheUsage,\n} from '../types/cache';\n\nconst DEFAULT_OBSERVATION_LIMIT = 64;\n\nexport class PromptCacheTelemetry implements PromptCacheTelemetryPort {\n readonly #limit: number;\n #request: PromptCacheRequestStatus = { capability: 'unknown' };\n #observations: PromptCacheObservation[] = [];\n\n constructor(limit: number = DEFAULT_OBSERVATION_LIMIT) {\n if (!Number.isInteger(limit) || limit < 1)\n throw new Error('Prompt cache telemetry limit must be a positive integer.');\n this.#limit = limit;\n }\n\n beginRequest(status: PromptCacheRequestStatus): void {\n this.#request = { ...status };\n }\n\n observe(usage: PromptCacheUsage, observedAt: number): void {\n const namespace = this.#request.namespace;\n const modelFingerprint = this.#request.modelFingerprint;\n if (!namespace || !modelFingerprint) return;\n\n this.#observations.push({\n namespace,\n modelFingerprint,\n cacheRead: usage.cacheRead,\n cacheWrite: usage.cacheWrite,\n totalInput: usage.totalInput,\n observedAt,\n });\n if (this.#observations.length > this.#limit) {\n this.#observations.splice(0, this.#observations.length - this.#limit);\n }\n }\n\n snapshot(): PromptCacheTelemetrySnapshot {\n const observations = [...this.#observations];\n return {\n ...this.#request,\n residency: 'unknown',\n observations,\n ...(observations.length > 0 ? { lastObservation: observations.at(-1) } : {}),\n };\n }\n\n reset(): void {\n this.#request = { capability: 'unknown' };\n this.#observations = [];\n }\n}\n"],"mappings":"AAUA,IAAa,EAAb,KAAsE,CACpE,GACA,GAAqC,CAAE,WAAY,SAAU,EAC7D,GAA0C,CAAC,EAE3C,YAAY,EAAgB,GAA2B,CACrD,GAAI,CAAC,OAAO,UAAU,CAAK,GAAK,EAAQ,EACtC,MAAU,MAAM,0DAA0D,EAC5E,KAAK,GAAS,CAChB,CAEA,aAAa,EAAwC,CACnD,KAAK,GAAW,CAAE,GAAG,CAAO,CAC9B,CAEA,QAAQ,EAAyB,EAA0B,CACzD,IAAM,EAAY,KAAK,GAAS,UAC1B,EAAmB,KAAK,GAAS,iBAClC,GAAc,IAEnB,KAAK,GAAc,KAAK,CACtB,YACA,mBACA,UAAW,EAAM,UACjB,WAAY,EAAM,WAClB,WAAY,EAAM,WAClB,YACF,CAAC,EACG,KAAK,GAAc,OAAS,KAAK,IACnC,KAAK,GAAc,OAAO,EAAG,KAAK,GAAc,OAAS,KAAK,EAAM,EAExE,CAEA,UAAyC,CACvC,IAAM,EAAe,CAAC,GAAG,KAAK,EAAa,EAC3C,MAAO,CACL,GAAG,KAAK,GACR,UAAW,UACX,eACA,GAAI,EAAa,OAAS,EAAI,CAAE,gBAAiB,EAAa,GAAG,EAAE,CAAE,EAAI,CAAC,CAC5E,CACF,CAEA,OAAc,CACZ,KAAK,GAAW,CAAE,WAAY,SAAU,EACxC,KAAK,GAAgB,CAAC,CACxB,CACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"promptCacheTelemetry.d.cts","names":[],"sources":["../../src/models/promptCacheTelemetry.ts"],"mappings":";;qBAUa,gCAAgC;;EAK3C,YAAY;EAMZ,aAAa,QAAQ;EAIrB,QAAQ,OAAO,kBAAkB;EAkBjC,YAAY;EAUZ"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"promptCacheTelemetry.d.mts","names":[],"sources":["../../src/models/promptCacheTelemetry.ts"],"mappings":";;qBAUa,gCAAgC;;EAK3C,YAAY;EAMZ,aAAa,QAAQ;EAIrB,QAAQ,OAAO,kBAAkB;EAkBjC,YAAY;EAUZ"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
var e=class{#e;#t={capability:`unknown`};#n=[];constructor(e=64){if(!Number.isInteger(e)||e<1)throw Error(`Prompt cache telemetry limit must be a positive integer.`);this.#e=e}beginRequest(e){this.#t={...e}}observe(e,t){let n=this.#t.namespace,r=this.#t.modelFingerprint;n&&r&&(this.#n.push({namespace:n,modelFingerprint:r,cacheRead:e.cacheRead,cacheWrite:e.cacheWrite,totalInput:e.totalInput,observedAt:t}),this.#n.length>this.#e&&this.#n.splice(0,this.#n.length-this.#e))}snapshot(){let e=[...this.#n];return{...this.#t,residency:`unknown`,observations:e,...e.length>0?{lastObservation:e.at(-1)}:{}}}reset(){this.#t={capability:`unknown`},this.#n=[]}};export{e as PromptCacheTelemetry};
|
|
2
|
-
//# sourceMappingURL=promptCacheTelemetry.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"promptCacheTelemetry.mjs","names":[],"sources":["../../src/models/promptCacheTelemetry.ts"],"sourcesContent":["import type {\n PromptCacheObservation,\n PromptCacheRequestStatus,\n PromptCacheTelemetryPort,\n PromptCacheTelemetrySnapshot,\n PromptCacheUsage,\n} from '../types/cache';\n\nconst DEFAULT_OBSERVATION_LIMIT = 64;\n\nexport class PromptCacheTelemetry implements PromptCacheTelemetryPort {\n readonly #limit: number;\n #request: PromptCacheRequestStatus = { capability: 'unknown' };\n #observations: PromptCacheObservation[] = [];\n\n constructor(limit: number = DEFAULT_OBSERVATION_LIMIT) {\n if (!Number.isInteger(limit) || limit < 1)\n throw new Error('Prompt cache telemetry limit must be a positive integer.');\n this.#limit = limit;\n }\n\n beginRequest(status: PromptCacheRequestStatus): void {\n this.#request = { ...status };\n }\n\n observe(usage: PromptCacheUsage, observedAt: number): void {\n const namespace = this.#request.namespace;\n const modelFingerprint = this.#request.modelFingerprint;\n if (!namespace || !modelFingerprint) return;\n\n this.#observations.push({\n namespace,\n modelFingerprint,\n cacheRead: usage.cacheRead,\n cacheWrite: usage.cacheWrite,\n totalInput: usage.totalInput,\n observedAt,\n });\n if (this.#observations.length > this.#limit) {\n this.#observations.splice(0, this.#observations.length - this.#limit);\n }\n }\n\n snapshot(): PromptCacheTelemetrySnapshot {\n const observations = [...this.#observations];\n return {\n ...this.#request,\n residency: 'unknown',\n observations,\n ...(observations.length > 0 ? { lastObservation: observations.at(-1) } : {}),\n };\n }\n\n reset(): void {\n this.#request = { capability: 'unknown' };\n this.#observations = [];\n }\n}\n"],"mappings":"AAUA,IAAa,EAAb,KAAsE,CACpE,GACA,GAAqC,CAAE,WAAY,SAAU,EAC7D,GAA0C,CAAC,EAE3C,YAAY,EAAgB,GAA2B,CACrD,GAAI,CAAC,OAAO,UAAU,CAAK,GAAK,EAAQ,EACtC,MAAU,MAAM,0DAA0D,EAC5E,KAAK,GAAS,CAChB,CAEA,aAAa,EAAwC,CACnD,KAAK,GAAW,CAAE,GAAG,CAAO,CAC9B,CAEA,QAAQ,EAAyB,EAA0B,CACzD,IAAM,EAAY,KAAK,GAAS,UAC1B,EAAmB,KAAK,GAAS,iBAClC,GAAc,IAEnB,KAAK,GAAc,KAAK,CACtB,YACA,mBACA,UAAW,EAAM,UACjB,WAAY,EAAM,WAClB,WAAY,EAAM,WAClB,YACF,CAAC,EACG,KAAK,GAAc,OAAS,KAAK,IACnC,KAAK,GAAc,OAAO,EAAG,KAAK,GAAc,OAAS,KAAK,EAAM,EAExE,CAEA,UAAyC,CACvC,IAAM,EAAe,CAAC,GAAG,KAAK,EAAa,EAC3C,MAAO,CACL,GAAG,KAAK,GACR,UAAW,UACX,eACA,GAAI,EAAa,OAAS,EAAI,CAAE,gBAAiB,EAAa,GAAG,EAAE,CAAE,EAAI,CAAC,CAC5E,CACF,CAEA,OAAc,CACZ,KAAK,GAAW,CAAE,WAAY,SAAU,EACxC,KAAK,GAAgB,CAAC,CACxB,CACF"}
|