@agimon-ai/doompi-cache 0.0.1-alpha.35 → 0.0.1-alpha.37

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 (124) hide show
  1. package/README.md +6 -0
  2. package/dist/api-contracts.cjs +1 -0
  3. package/dist/api-contracts.d.cts +2 -0
  4. package/dist/api-contracts.d.mts +2 -0
  5. package/dist/api-contracts.mjs +1 -0
  6. package/dist/constants/environment.cjs.map +1 -0
  7. package/dist/{types → constants}/environment.d.cts +1 -1
  8. package/dist/constants/environment.d.cts.map +1 -0
  9. package/dist/{types → constants}/environment.d.mts +1 -1
  10. package/dist/constants/environment.d.mts.map +1 -0
  11. package/dist/constants/environment.mjs.map +1 -0
  12. package/dist/controllers/cacheHooks.cjs +2 -0
  13. package/dist/controllers/cacheHooks.cjs.map +1 -0
  14. package/dist/controllers/cacheHooks.mjs +2 -0
  15. package/dist/controllers/cacheHooks.mjs.map +1 -0
  16. package/dist/env.cjs +1 -1
  17. package/dist/env.d.cts +1 -1
  18. package/dist/env.d.mts +1 -1
  19. package/dist/env.mjs +1 -1
  20. package/dist/extensions/pi.cjs +1 -1
  21. package/dist/extensions/pi.cjs.map +1 -1
  22. package/dist/extensions/pi.d.cts +1 -1
  23. package/dist/extensions/pi.d.cts.map +1 -1
  24. package/dist/extensions/pi.d.mts +1 -1
  25. package/dist/extensions/pi.d.mts.map +1 -1
  26. package/dist/extensions/pi.mjs +1 -1
  27. package/dist/extensions/pi.mjs.map +1 -1
  28. package/dist/extensions/server.cjs +2 -0
  29. package/dist/extensions/server.cjs.map +1 -0
  30. package/dist/extensions/server.d.cts +5 -0
  31. package/dist/extensions/server.d.cts.map +1 -0
  32. package/dist/extensions/server.d.mts +5 -0
  33. package/dist/extensions/server.d.mts.map +1 -0
  34. package/dist/extensions/server.mjs +2 -0
  35. package/dist/extensions/server.mjs.map +1 -0
  36. package/dist/index.cjs +1 -1
  37. package/dist/index.d.cts +6 -6
  38. package/dist/index.d.mts +6 -6
  39. package/dist/index.mjs +1 -1
  40. package/dist/{services/telemetry.cjs → models/promptCacheTelemetry.cjs} +1 -1
  41. package/dist/models/promptCacheTelemetry.cjs.map +1 -0
  42. package/dist/{services/telemetry.d.cts → models/promptCacheTelemetry.d.cts} +2 -2
  43. package/dist/models/promptCacheTelemetry.d.cts.map +1 -0
  44. package/dist/{services/telemetry.d.mts → models/promptCacheTelemetry.d.mts} +2 -2
  45. package/dist/models/promptCacheTelemetry.d.mts.map +1 -0
  46. package/dist/{services/telemetry.mjs → models/promptCacheTelemetry.mjs} +1 -1
  47. package/dist/models/promptCacheTelemetry.mjs.map +1 -0
  48. package/dist/schemas/apiContracts.cjs +2 -0
  49. package/dist/schemas/apiContracts.cjs.map +1 -0
  50. package/dist/schemas/apiContracts.d.cts +53 -0
  51. package/dist/schemas/apiContracts.d.cts.map +1 -0
  52. package/dist/schemas/apiContracts.d.mts +53 -0
  53. package/dist/schemas/apiContracts.d.mts.map +1 -0
  54. package/dist/schemas/apiContracts.mjs +2 -0
  55. package/dist/schemas/apiContracts.mjs.map +1 -0
  56. package/dist/services/{canonical.cjs → canonical/index.cjs} +1 -1
  57. package/dist/services/canonical/index.cjs.map +1 -0
  58. package/dist/services/{canonical.d.cts → canonical/index.d.cts} +2 -2
  59. package/dist/services/canonical/index.d.cts.map +1 -0
  60. package/dist/services/{canonical.d.mts → canonical/index.d.mts} +2 -2
  61. package/dist/services/canonical/index.d.mts.map +1 -0
  62. package/dist/services/{canonical.mjs → canonical/index.mjs} +1 -1
  63. package/dist/services/canonical/index.mjs.map +1 -0
  64. package/dist/{adapters/node/digest.cjs → services/digest/index.cjs} +1 -1
  65. package/dist/{adapters/node/digest.cjs.map → services/digest/index.cjs.map} +1 -1
  66. package/dist/{adapters/node/digest.d.mts → services/digest/index.d.cts} +2 -2
  67. package/dist/services/digest/index.d.cts.map +1 -0
  68. package/dist/{adapters/node/digest.d.cts → services/digest/index.d.mts} +2 -2
  69. package/dist/services/digest/index.d.mts.map +1 -0
  70. package/dist/{adapters/node/digest.mjs → services/digest/index.mjs} +1 -1
  71. package/dist/{adapters/node/digest.mjs.map → services/digest/index.mjs.map} +1 -1
  72. package/dist/services/namespace/index.cjs +2 -0
  73. package/dist/services/namespace/index.cjs.map +1 -0
  74. package/dist/services/{namespace.d.cts → namespace/index.d.cts} +3 -3
  75. package/dist/services/namespace/index.d.cts.map +1 -0
  76. package/dist/services/{namespace.d.mts → namespace/index.d.mts} +3 -3
  77. package/dist/services/namespace/index.d.mts.map +1 -0
  78. package/dist/services/namespace/index.mjs +2 -0
  79. package/dist/services/namespace/index.mjs.map +1 -0
  80. package/dist/{providers/promptCacheTelemetry.cjs → services/promptCacheTelemetry/index.cjs} +1 -1
  81. package/dist/services/promptCacheTelemetry/index.cjs.map +1 -0
  82. package/dist/{providers/promptCacheTelemetry.d.cts → services/promptCacheTelemetry/index.d.cts} +3 -3
  83. package/dist/services/promptCacheTelemetry/index.d.cts.map +1 -0
  84. package/dist/{providers/promptCacheTelemetry.d.mts → services/promptCacheTelemetry/index.d.mts} +3 -3
  85. package/dist/services/promptCacheTelemetry/index.d.mts.map +1 -0
  86. package/dist/{providers/promptCacheTelemetry.mjs → services/promptCacheTelemetry/index.mjs} +1 -1
  87. package/dist/services/promptCacheTelemetry/index.mjs.map +1 -0
  88. package/dist/services/{providerPolicy.cjs → providerPolicy/index.cjs} +1 -1
  89. package/dist/services/{providerPolicy.cjs.map → providerPolicy/index.cjs.map} +1 -1
  90. package/dist/services/{providerPolicy.d.cts → providerPolicy/index.d.cts} +3 -3
  91. package/dist/services/providerPolicy/index.d.cts.map +1 -0
  92. package/dist/services/{providerPolicy.d.mts → providerPolicy/index.d.mts} +3 -3
  93. package/dist/services/providerPolicy/index.d.mts.map +1 -0
  94. package/dist/services/{providerPolicy.mjs → providerPolicy/index.mjs} +1 -1
  95. package/dist/services/{providerPolicy.mjs.map → providerPolicy/index.mjs.map} +1 -1
  96. package/package.json +21 -4
  97. package/dist/adapters/node/digest.d.cts.map +0 -1
  98. package/dist/adapters/node/digest.d.mts.map +0 -1
  99. package/dist/providers/promptCacheTelemetry.cjs.map +0 -1
  100. package/dist/providers/promptCacheTelemetry.d.cts.map +0 -1
  101. package/dist/providers/promptCacheTelemetry.d.mts.map +0 -1
  102. package/dist/providers/promptCacheTelemetry.mjs.map +0 -1
  103. package/dist/services/canonical.cjs.map +0 -1
  104. package/dist/services/canonical.d.cts.map +0 -1
  105. package/dist/services/canonical.d.mts.map +0 -1
  106. package/dist/services/canonical.mjs.map +0 -1
  107. package/dist/services/namespace.cjs +0 -2
  108. package/dist/services/namespace.cjs.map +0 -1
  109. package/dist/services/namespace.d.cts.map +0 -1
  110. package/dist/services/namespace.d.mts.map +0 -1
  111. package/dist/services/namespace.mjs +0 -2
  112. package/dist/services/namespace.mjs.map +0 -1
  113. package/dist/services/providerPolicy.d.cts.map +0 -1
  114. package/dist/services/providerPolicy.d.mts.map +0 -1
  115. package/dist/services/telemetry.cjs.map +0 -1
  116. package/dist/services/telemetry.d.cts.map +0 -1
  117. package/dist/services/telemetry.d.mts.map +0 -1
  118. package/dist/services/telemetry.mjs.map +0 -1
  119. package/dist/types/environment.cjs.map +0 -1
  120. package/dist/types/environment.d.cts.map +0 -1
  121. package/dist/types/environment.d.mts.map +0 -1
  122. package/dist/types/environment.mjs.map +0 -1
  123. /package/dist/{types → constants}/environment.cjs +0 -0
  124. /package/dist/{types → constants}/environment.mjs +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["canonicalJson"],"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":"0CAeA,SAAS,EAAe,EAAgB,EAAgB,EAAmC,CACzF,MAAO,GAAG,IAAS,EAAOA,EAAAA,cAAc,CAAK,CAAC,GAChD,CAEA,SAAS,EAAkB,EAA+C,CAExE,OADmB,GAAO,KAAK,CAAC,CAAC,WAAW,KAAM,GAAG,GAChC,IAAA,EACvB,CAEA,SAAS,EAAiB,EAAgF,CACxG,OAAO,EACJ,QAAQ,CAAE,gBAAiB,IAAe,UAAY,IAAe,YAAY,CAAC,CAClF,KAAK,CAAE,SAAQ,KAAI,0BAA2B,CAC7C,SACA,KACA,GAAI,EAAsB,CAAE,qBAAoB,EAAI,CAAC,CACvD,EAAE,CAAC,CACF,MAAM,EAAM,IAAU,EAAK,OAAO,cAAc,EAAM,MAAM,GAAK,EAAK,GAAG,cAAc,EAAM,EAAE,CAAC,CACrG,CAEA,SAAgB,EAA0B,EAAuB,EAAmC,CAClG,OAAO,EAAe,QAAa,CAAE,QAAS,EAAG,eAAc,EAAG,CAAM,CAC1E,CAEA,SAAgB,EAAiC,EAA+B,EAAmC,CACjH,OAAO,EACL,QACA,CACE,QAAS,EACT,YAAa,EAA0B,EAAM,cAAe,CAAM,EAClE,uBAAwB,EAAM,wBAA0B,KACxD,UAAW,EAAM,UACjB,QAAS,CAAC,GAAG,EAAM,OAAO,EAC1B,QAAS,EAAM,SAAW,KAC1B,QAAS,EAAkB,EAAM,OAAO,GAAK,KAC7C,WAAY,EAAiB,EAAM,UAAU,CAC/C,EACA,CACF,CACF,CAEA,SAAgB,EACd,EACA,EACQ,CACR,OAAO,EACL,QACA,CACE,QAAS,EACT,aAAc,EAAW,cAAgB,KACzC,MAAO,CAAC,GAAG,EAAW,KAAK,EAC3B,cAAe,CAAC,GAAG,EAAW,aAAa,CAAC,CAAC,MAAM,EAAM,IAAU,EAAK,cAAc,CAAK,CAAC,EAC5F,WAAY,CAAC,GAAG,EAAW,UAAU,EACrC,sBAAuB,EAAW,uBAAyB,KAC3D,cAAe,EAAW,eAAiB,KAC3C,OAAQ,EAAW,QAAU,KAC7B,uBAAwB,EAAW,wBAA0B,IAC/D,EACA,CACF,CACF,CAEA,SAAgB,EAAkC,EAAiC,EAAmC,CACpH,OAAO,EACL,QACA,CACE,QAAS,EACT,gBAAiB,EAAM,iBAAmB,KAC1C,aAAc,EAAM,cAAgB,KACpC,IAAK,EAAM,KAAO,KAClB,QAAS,EAAM,SAAW,KAC1B,UAAW,EAAM,WAAa,IAChC,EACA,CACF,CACF,CAEA,SAAgB,EACd,EACA,EACA,EACA,EACA,EACQ,CACR,OAAO,EACL,QACA,CACE,QAAS,EACT,kBACA,QACA,gBAAiB,GAAmB,KACpC,kBACF,EACA,CACF,CACF"}
@@ -1,9 +1,9 @@
1
- import { PromptCacheChildProjection, PromptCacheDigest, PromptCacheModelIdentity, PromptCacheParentState } from "../types/cache.cjs";
2
- //#region src/services/namespace.d.ts
1
+ import { PromptCacheChildProjection, PromptCacheDigest, PromptCacheModelIdentity, PromptCacheParentState } from "../../types/cache.cjs";
2
+ //#region src/services/namespace/index.d.ts
3
3
  export declare function createRootSessionIdentity(rootSessionId: string, digest: PromptCacheDigest): string;
4
4
  export declare function createParentPromptCacheNamespace(state: PromptCacheParentState, digest: PromptCacheDigest): string;
5
5
  export declare function createChildPromptCacheProjection(projection: PromptCacheChildProjection, digest: PromptCacheDigest): string;
6
6
  export declare function createPromptCacheModelFingerprint(model: PromptCacheModelIdentity, digest: PromptCacheDigest): string;
7
7
  export declare function createPromptCacheKey(parentNamespace: string, scope: 'parent' | 'child', modelFingerprint: string, digest: PromptCacheDigest, childProjection?: string): string;
8
8
  //#endregion
9
- //# sourceMappingURL=namespace.d.cts.map
9
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../../../src/services/namespace/index.ts"],"mappings":";;wBAmCgB,0BAA0B,uBAAuB,QAAQ;wBAIzD,iCAAiC,OAAO,wBAAwB,QAAQ;wBAiBxE,iCACd,YAAY,4BACZ,QAAQ;wBAmBM,kCAAkC,OAAO,0BAA0B,QAAQ;wBAe3E,qBACd,yBACA,2BACA,0BACA,QAAQ,mBACR"}
@@ -1,9 +1,9 @@
1
- import { PromptCacheChildProjection, PromptCacheDigest, PromptCacheModelIdentity, PromptCacheParentState } from "../types/cache.mjs";
2
- //#region src/services/namespace.d.ts
1
+ import { PromptCacheChildProjection, PromptCacheDigest, PromptCacheModelIdentity, PromptCacheParentState } from "../../types/cache.mjs";
2
+ //#region src/services/namespace/index.d.ts
3
3
  export declare function createRootSessionIdentity(rootSessionId: string, digest: PromptCacheDigest): string;
4
4
  export declare function createParentPromptCacheNamespace(state: PromptCacheParentState, digest: PromptCacheDigest): string;
5
5
  export declare function createChildPromptCacheProjection(projection: PromptCacheChildProjection, digest: PromptCacheDigest): string;
6
6
  export declare function createPromptCacheModelFingerprint(model: PromptCacheModelIdentity, digest: PromptCacheDigest): string;
7
7
  export declare function createPromptCacheKey(parentNamespace: string, scope: 'parent' | 'child', modelFingerprint: string, digest: PromptCacheDigest, childProjection?: string): string;
8
8
  //#endregion
9
- //# sourceMappingURL=namespace.d.mts.map
9
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../../src/services/namespace/index.ts"],"mappings":";;wBAmCgB,0BAA0B,uBAAuB,QAAQ;wBAIzD,iCAAiC,OAAO,wBAAwB,QAAQ;wBAiBxE,iCACd,YAAY,4BACZ,QAAQ;wBAmBM,kCAAkC,OAAO,0BAA0B,QAAQ;wBAe3E,qBACd,yBACA,2BACA,0BACA,QAAQ,mBACR"}
@@ -0,0 +1,2 @@
1
+ import{canonicalJson as e}from"../canonical/index.mjs";function t(t,n,r){return`${t}${r(e(n))}`}function n(e){return e?.trim().replaceAll(`\\`,`/`)||void 0}function r(e){return e.filter(({activation:e})=>e===`active`||e===`activating`).map(({source:e,id:t,modelContextVariant:n})=>({source:e,id:t,...n?{modelContextVariant:n}:{}})).sort((e,t)=>e.source.localeCompare(t.source)||e.id.localeCompare(t.id))}function i(e,n){return t(`dpr1_`,{version:1,rootSessionId:e},n)}function a(e,a){return t(`dpn1_`,{version:1,rootSession:i(e.rootSessionId,a),compositionFingerprint:e.compositionFingerprint??null,majorMode:e.majorMode,domains:[...e.domains],profile:e.profile??null,persona:n(e.persona)??null,minorModes:r(e.minorModes)},a)}function o(e,n){return t(`dch1_`,{version:1,systemPrompt:e.systemPrompt??null,tools:[...e.tools],excludedTools:[...e.excludedTools].sort((e,t)=>e.localeCompare(t)),extensions:[...e.extensions],inheritProjectContext:e.inheritProjectContext??null,inheritSkills:e.inheritSkills??null,fanout:e.fanout??null,structuredOutputSchema:e.structuredOutputSchema??null},n)}function s(e,n){return t(`dpm1_`,{version:1,virtualProvider:e.virtualProvider??null,virtualModel:e.virtualModel??null,api:e.api??null,baseUrl:e.baseUrl??null,wireModel:e.wireModel??null},n)}function c(e,n,r,i,a){return t(`dpc1_`,{version:1,parentNamespace:e,scope:n,childProjection:a??null,modelFingerprint:r},i)}export{o as createChildPromptCacheProjection,a as createParentPromptCacheNamespace,c as createPromptCacheKey,s as createPromptCacheModelFingerprint,i as createRootSessionIdentity};
2
+ //# 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":"uDAeA,SAAS,EAAe,EAAgB,EAAgB,EAAmC,CACzF,MAAO,GAAG,IAAS,EAAO,EAAc,CAAK,CAAC,GAChD,CAEA,SAAS,EAAkB,EAA+C,CAExE,OADmB,GAAO,KAAK,CAAC,CAAC,WAAW,KAAM,GAAG,GAChC,IAAA,EACvB,CAEA,SAAS,EAAiB,EAAgF,CACxG,OAAO,EACJ,QAAQ,CAAE,gBAAiB,IAAe,UAAY,IAAe,YAAY,CAAC,CAClF,KAAK,CAAE,SAAQ,KAAI,0BAA2B,CAC7C,SACA,KACA,GAAI,EAAsB,CAAE,qBAAoB,EAAI,CAAC,CACvD,EAAE,CAAC,CACF,MAAM,EAAM,IAAU,EAAK,OAAO,cAAc,EAAM,MAAM,GAAK,EAAK,GAAG,cAAc,EAAM,EAAE,CAAC,CACrG,CAEA,SAAgB,EAA0B,EAAuB,EAAmC,CAClG,OAAO,EAAe,QAAa,CAAE,QAAS,EAAG,eAAc,EAAG,CAAM,CAC1E,CAEA,SAAgB,EAAiC,EAA+B,EAAmC,CACjH,OAAO,EACL,QACA,CACE,QAAS,EACT,YAAa,EAA0B,EAAM,cAAe,CAAM,EAClE,uBAAwB,EAAM,wBAA0B,KACxD,UAAW,EAAM,UACjB,QAAS,CAAC,GAAG,EAAM,OAAO,EAC1B,QAAS,EAAM,SAAW,KAC1B,QAAS,EAAkB,EAAM,OAAO,GAAK,KAC7C,WAAY,EAAiB,EAAM,UAAU,CAC/C,EACA,CACF,CACF,CAEA,SAAgB,EACd,EACA,EACQ,CACR,OAAO,EACL,QACA,CACE,QAAS,EACT,aAAc,EAAW,cAAgB,KACzC,MAAO,CAAC,GAAG,EAAW,KAAK,EAC3B,cAAe,CAAC,GAAG,EAAW,aAAa,CAAC,CAAC,MAAM,EAAM,IAAU,EAAK,cAAc,CAAK,CAAC,EAC5F,WAAY,CAAC,GAAG,EAAW,UAAU,EACrC,sBAAuB,EAAW,uBAAyB,KAC3D,cAAe,EAAW,eAAiB,KAC3C,OAAQ,EAAW,QAAU,KAC7B,uBAAwB,EAAW,wBAA0B,IAC/D,EACA,CACF,CACF,CAEA,SAAgB,EAAkC,EAAiC,EAAmC,CACpH,OAAO,EACL,QACA,CACE,QAAS,EACT,gBAAiB,EAAM,iBAAmB,KAC1C,aAAc,EAAM,cAAgB,KACpC,IAAK,EAAM,KAAO,KAClB,QAAS,EAAM,SAAW,KAC1B,UAAW,EAAM,WAAa,IAChC,EACA,CACF,CACF,CAEA,SAAgB,EACd,EACA,EACA,EACA,EACA,EACQ,CACR,OAAO,EACL,QACA,CACE,QAAS,EACT,kBACA,QACA,gBAAiB,GAAmB,KACpC,kBACF,EACA,CACF,CACF"}
@@ -1,2 +1,2 @@
1
1
  let e=require("@deepseek-ai/cordis");const t=`doom/prompt-cache-telemetry`;var n=class extends e.Service{telemetry;constructor(e,n){super(e,t),this.telemetry=n}snapshot(){return this.telemetry.snapshot()}};function r(e){return e.get(t)}exports.DOOM_PROMPT_CACHE_TELEMETRY_SERVICE=t,exports.PromptCacheTelemetryService=n,exports.readPromptCacheTelemetry=r;
2
- //# sourceMappingURL=promptCacheTelemetry.cjs.map
2
+ //# 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":"qCAIA,MAAa,EAAsC,8BAEnD,IAAa,EAAb,cAAiDA,EAAAA,OAAQ,CAGpC,UAFnB,YACE,EACA,EACA,CACA,MAAM,EAAS,CAAmC,EAFjC,KAAA,UAAA,CAGnB,CAEA,UAAyC,CACvC,OAAO,KAAK,UAAU,SAAS,CACjC,CACF,EAEA,SAAgB,EAAyB,EAA2D,CAClG,OAAO,EAAQ,IAAI,CAAmC,CACxD"}
@@ -1,6 +1,6 @@
1
- import { PromptCacheTelemetryPort, PromptCacheTelemetrySnapshot } from "../types/cache.cjs";
1
+ import { PromptCacheTelemetryPort, PromptCacheTelemetrySnapshot } from "../../types/cache.cjs";
2
2
  import { Context, Service } from "@deepseek-ai/cordis";
3
- //#region src/providers/promptCacheTelemetry.d.ts
3
+ //#region src/services/promptCacheTelemetry/index.d.ts
4
4
  export declare const DOOM_PROMPT_CACHE_TELEMETRY_SERVICE = "doom/prompt-cache-telemetry";
5
5
  export declare class PromptCacheTelemetryService extends Service {
6
6
  private readonly telemetry;
@@ -14,4 +14,4 @@ declare module '@deepseek-ai/cordis' {
14
14
  }
15
15
  }
16
16
  //#endregion
17
- //# sourceMappingURL=promptCacheTelemetry.d.cts.map
17
+ //# sourceMappingURL=index.d.cts.map
@@ -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"}
@@ -1,6 +1,6 @@
1
- import { PromptCacheTelemetryPort, PromptCacheTelemetrySnapshot } from "../types/cache.mjs";
1
+ import { PromptCacheTelemetryPort, PromptCacheTelemetrySnapshot } from "../../types/cache.mjs";
2
2
  import { Context, Service } from "@deepseek-ai/cordis";
3
- //#region src/providers/promptCacheTelemetry.d.ts
3
+ //#region src/services/promptCacheTelemetry/index.d.ts
4
4
  export declare const DOOM_PROMPT_CACHE_TELEMETRY_SERVICE = "doom/prompt-cache-telemetry";
5
5
  export declare class PromptCacheTelemetryService extends Service {
6
6
  private readonly telemetry;
@@ -14,4 +14,4 @@ declare module '@deepseek-ai/cordis' {
14
14
  }
15
15
  }
16
16
  //#endregion
17
- //# sourceMappingURL=promptCacheTelemetry.d.mts.map
17
+ //# sourceMappingURL=index.d.mts.map
@@ -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"}
@@ -1,2 +1,2 @@
1
1
  import{Service as e}from"@deepseek-ai/cordis";const t=`doom/prompt-cache-telemetry`;var n=class extends e{telemetry;constructor(e,n){super(e,t),this.telemetry=n}snapshot(){return this.telemetry.snapshot()}};function r(e){return e.get(t)}export{t as DOOM_PROMPT_CACHE_TELEMETRY_SERVICE,n as PromptCacheTelemetryService,r as readPromptCacheTelemetry};
2
- //# sourceMappingURL=promptCacheTelemetry.mjs.map
2
+ //# 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":"8CAIA,MAAa,EAAsC,8BAEnD,IAAa,EAAb,cAAiD,CAAQ,CAGpC,UAFnB,YACE,EACA,EACA,CACA,MAAM,EAAS,CAAmC,EAFjC,KAAA,UAAA,CAGnB,CAEA,UAAyC,CACvC,OAAO,KAAK,UAAU,SAAS,CACjC,CACF,EAEA,SAAgB,EAAyB,EAA2D,CAClG,OAAO,EAAQ,IAAI,CAAmC,CACxD"}
@@ -1,2 +1,2 @@
1
1
  const e=new Set([`openai-completions`,`openai-responses`,`openai-codex-responses`,`azure-openai-responses`]),t=new Set([`anthropic-messages`,`bedrock-converse-stream`]),n=new Set([`google-generative-ai`,`google-vertex`,`google-vertex-anthropic`]);function r(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function i(r){return r.api===`openai-responses`||r.api===`openai-completions`?r.virtualProvider===`openai`?`key-and-long-retention`:`key-only`:r.api&&e.has(r.api)?`key-only`:r.api&&t.has(r.api)?`marker-only`:r.api&&n.has(r.api)?`automatic`:`unknown`}function a(t,n,i,a){if(!a||!n||!e.has(n)||!r(t))return;let o=t.prompt_cache_key;if(typeof o==`string`&&o.trim()&&o!==i)return{...t,prompt_cache_key:i}}function o(e){if(!r(e))return;let t=e.prompt_cache_retention;return typeof t==`string`&&t.trim()?t.trim():void 0}exports.classifyPromptCacheCapability=i,exports.requestedPromptCacheRetention=o,exports.rewritePromptCacheKey=a;
2
- //# sourceMappingURL=providerPolicy.cjs.map
2
+ //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"providerPolicy.cjs","names":[],"sources":["../../src/services/providerPolicy.ts"],"sourcesContent":["import type { PromptCacheCapabilityClass, PromptCacheModelIdentity } from '../types/cache.ts';\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,EAAmB,IAAI,IAAI,CAC/B,qBACA,mBACA,yBACA,wBACF,CAAC,EAEK,EAAc,IAAI,IAAI,CAAC,qBAAsB,yBAAyB,CAAC,EACvE,EAAiB,IAAI,IAAI,CAAC,uBAAwB,gBAAiB,yBAAyB,CAAC,EAEnG,SAAS,EAAS,EAA4D,CAC5E,OAAO,OAAO,GAAU,YAAY,GAAkB,CAAC,MAAM,QAAQ,CAAK,CAC5E,CAEA,SAAgB,EAA8B,EAA6D,CAOzG,OANI,EAAM,MAAQ,oBAAsB,EAAM,MAAQ,qBAC7C,EAAM,kBAAoB,SAAW,yBAA2B,WAErE,EAAM,KAAO,EAAiB,IAAI,EAAM,GAAG,EAAU,WACrD,EAAM,KAAO,EAAY,IAAI,EAAM,GAAG,EAAU,cAChD,EAAM,KAAO,EAAe,IAAI,EAAM,GAAG,EAAU,YAChD,SACT,CAEA,SAAgB,EACd,EACA,EACA,EACA,EACqC,CACrC,GAAI,CAAC,GAAW,CAAC,GAAO,CAAC,EAAiB,IAAI,CAAG,GAAK,CAAC,EAAS,CAAO,EAAG,OAC1E,IAAM,EAAU,EAAQ,iBACpB,UAAO,GAAY,UAAa,EAAQ,KAAK,GAAK,IAAY,EAClE,MAAO,CAAE,GAAG,EAAS,iBAAkB,CAAI,CAC7C,CAEA,SAAgB,EAA8B,EAAsC,CAClF,GAAI,CAAC,EAAS,CAAO,EAAG,OACxB,IAAM,EAAY,EAAQ,uBAC1B,OAAO,OAAO,GAAc,UAAY,EAAU,KAAK,EAAI,EAAU,KAAK,EAAI,IAAA,EAChF"}
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,EAAmB,IAAI,IAAI,CAC/B,qBACA,mBACA,yBACA,wBACF,CAAC,EAEK,EAAc,IAAI,IAAI,CAAC,qBAAsB,yBAAyB,CAAC,EACvE,EAAiB,IAAI,IAAI,CAAC,uBAAwB,gBAAiB,yBAAyB,CAAC,EAEnG,SAAS,EAAS,EAA4D,CAC5E,OAAO,OAAO,GAAU,YAAY,GAAkB,CAAC,MAAM,QAAQ,CAAK,CAC5E,CAEA,SAAgB,EAA8B,EAA6D,CAOzG,OANI,EAAM,MAAQ,oBAAsB,EAAM,MAAQ,qBAC7C,EAAM,kBAAoB,SAAW,yBAA2B,WAErE,EAAM,KAAO,EAAiB,IAAI,EAAM,GAAG,EAAU,WACrD,EAAM,KAAO,EAAY,IAAI,EAAM,GAAG,EAAU,cAChD,EAAM,KAAO,EAAe,IAAI,EAAM,GAAG,EAAU,YAChD,SACT,CAEA,SAAgB,EACd,EACA,EACA,EACA,EACqC,CACrC,GAAI,CAAC,GAAW,CAAC,GAAO,CAAC,EAAiB,IAAI,CAAG,GAAK,CAAC,EAAS,CAAO,EAAG,OAC1E,IAAM,EAAU,EAAQ,iBACpB,UAAO,GAAY,UAAa,EAAQ,KAAK,GAAK,IAAY,EAClE,MAAO,CAAE,GAAG,EAAS,iBAAkB,CAAI,CAC7C,CAEA,SAAgB,EAA8B,EAAsC,CAClF,GAAI,CAAC,EAAS,CAAO,EAAG,OACxB,IAAM,EAAY,EAAQ,uBAC1B,OAAO,OAAO,GAAc,UAAY,EAAU,KAAK,EAAI,EAAU,KAAK,EAAI,IAAA,EAChF"}
@@ -1,7 +1,7 @@
1
- import { PromptCacheCapabilityClass, PromptCacheModelIdentity } from "../types/cache.cjs";
2
- //#region src/services/providerPolicy.d.ts
1
+ import { PromptCacheCapabilityClass, PromptCacheModelIdentity } from "../../types/cache.cjs";
2
+ //#region src/services/providerPolicy/index.d.ts
3
3
  export declare function classifyPromptCacheCapability(model: PromptCacheModelIdentity): PromptCacheCapabilityClass;
4
4
  export declare function rewritePromptCacheKey(payload: unknown, api: string | undefined, key: string, enabled: boolean): Record<string, unknown> | undefined;
5
5
  export declare function requestedPromptCacheRetention(payload: unknown): string | undefined;
6
6
  //#endregion
7
- //# sourceMappingURL=providerPolicy.d.cts.map
7
+ //# sourceMappingURL=index.d.cts.map
@@ -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"}
@@ -1,7 +1,7 @@
1
- import { PromptCacheCapabilityClass, PromptCacheModelIdentity } from "../types/cache.mjs";
2
- //#region src/services/providerPolicy.d.ts
1
+ import { PromptCacheCapabilityClass, PromptCacheModelIdentity } from "../../types/cache.mjs";
2
+ //#region src/services/providerPolicy/index.d.ts
3
3
  export declare function classifyPromptCacheCapability(model: PromptCacheModelIdentity): PromptCacheCapabilityClass;
4
4
  export declare function rewritePromptCacheKey(payload: unknown, api: string | undefined, key: string, enabled: boolean): Record<string, unknown> | undefined;
5
5
  export declare function requestedPromptCacheRetention(payload: unknown): string | undefined;
6
6
  //#endregion
7
- //# sourceMappingURL=providerPolicy.d.mts.map
7
+ //# sourceMappingURL=index.d.mts.map
@@ -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"}
@@ -1,2 +1,2 @@
1
1
  const e=new Set([`openai-completions`,`openai-responses`,`openai-codex-responses`,`azure-openai-responses`]),t=new Set([`anthropic-messages`,`bedrock-converse-stream`]),n=new Set([`google-generative-ai`,`google-vertex`,`google-vertex-anthropic`]);function r(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function i(r){return r.api===`openai-responses`||r.api===`openai-completions`?r.virtualProvider===`openai`?`key-and-long-retention`:`key-only`:r.api&&e.has(r.api)?`key-only`:r.api&&t.has(r.api)?`marker-only`:r.api&&n.has(r.api)?`automatic`:`unknown`}function a(t,n,i,a){if(!a||!n||!e.has(n)||!r(t))return;let o=t.prompt_cache_key;if(typeof o==`string`&&o.trim()&&o!==i)return{...t,prompt_cache_key:i}}function o(e){if(!r(e))return;let t=e.prompt_cache_retention;return typeof t==`string`&&t.trim()?t.trim():void 0}export{i as classifyPromptCacheCapability,o as requestedPromptCacheRetention,a as rewritePromptCacheKey};
2
- //# sourceMappingURL=providerPolicy.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"providerPolicy.mjs","names":[],"sources":["../../src/services/providerPolicy.ts"],"sourcesContent":["import type { PromptCacheCapabilityClass, PromptCacheModelIdentity } from '../types/cache.ts';\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,EAAmB,IAAI,IAAI,CAC/B,qBACA,mBACA,yBACA,wBACF,CAAC,EAEK,EAAc,IAAI,IAAI,CAAC,qBAAsB,yBAAyB,CAAC,EACvE,EAAiB,IAAI,IAAI,CAAC,uBAAwB,gBAAiB,yBAAyB,CAAC,EAEnG,SAAS,EAAS,EAA4D,CAC5E,OAAO,OAAO,GAAU,YAAY,GAAkB,CAAC,MAAM,QAAQ,CAAK,CAC5E,CAEA,SAAgB,EAA8B,EAA6D,CAOzG,OANI,EAAM,MAAQ,oBAAsB,EAAM,MAAQ,qBAC7C,EAAM,kBAAoB,SAAW,yBAA2B,WAErE,EAAM,KAAO,EAAiB,IAAI,EAAM,GAAG,EAAU,WACrD,EAAM,KAAO,EAAY,IAAI,EAAM,GAAG,EAAU,cAChD,EAAM,KAAO,EAAe,IAAI,EAAM,GAAG,EAAU,YAChD,SACT,CAEA,SAAgB,EACd,EACA,EACA,EACA,EACqC,CACrC,GAAI,CAAC,GAAW,CAAC,GAAO,CAAC,EAAiB,IAAI,CAAG,GAAK,CAAC,EAAS,CAAO,EAAG,OAC1E,IAAM,EAAU,EAAQ,iBACpB,UAAO,GAAY,UAAa,EAAQ,KAAK,GAAK,IAAY,EAClE,MAAO,CAAE,GAAG,EAAS,iBAAkB,CAAI,CAC7C,CAEA,SAAgB,EAA8B,EAAsC,CAClF,GAAI,CAAC,EAAS,CAAO,EAAG,OACxB,IAAM,EAAY,EAAQ,uBAC1B,OAAO,OAAO,GAAc,UAAY,EAAU,KAAK,EAAI,EAAU,KAAK,EAAI,IAAA,EAChF"}
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,EAAmB,IAAI,IAAI,CAC/B,qBACA,mBACA,yBACA,wBACF,CAAC,EAEK,EAAc,IAAI,IAAI,CAAC,qBAAsB,yBAAyB,CAAC,EACvE,EAAiB,IAAI,IAAI,CAAC,uBAAwB,gBAAiB,yBAAyB,CAAC,EAEnG,SAAS,EAAS,EAA4D,CAC5E,OAAO,OAAO,GAAU,YAAY,GAAkB,CAAC,MAAM,QAAQ,CAAK,CAC5E,CAEA,SAAgB,EAA8B,EAA6D,CAOzG,OANI,EAAM,MAAQ,oBAAsB,EAAM,MAAQ,qBAC7C,EAAM,kBAAoB,SAAW,yBAA2B,WAErE,EAAM,KAAO,EAAiB,IAAI,EAAM,GAAG,EAAU,WACrD,EAAM,KAAO,EAAY,IAAI,EAAM,GAAG,EAAU,cAChD,EAAM,KAAO,EAAe,IAAI,EAAM,GAAG,EAAU,YAChD,SACT,CAEA,SAAgB,EACd,EACA,EACA,EACA,EACqC,CACrC,GAAI,CAAC,GAAW,CAAC,GAAO,CAAC,EAAiB,IAAI,CAAG,GAAK,CAAC,EAAS,CAAO,EAAG,OAC1E,IAAM,EAAU,EAAQ,iBACpB,UAAO,GAAY,UAAa,EAAQ,KAAK,GAAK,IAAY,EAClE,MAAO,CAAE,GAAG,EAAS,iBAAkB,CAAI,CAC7C,CAEA,SAAgB,EAA8B,EAAsC,CAClF,GAAI,CAAC,EAAS,CAAO,EAAG,OACxB,IAAM,EAAY,EAAQ,uBAC1B,OAAO,OAAO,GAAc,UAAY,EAAU,KAAK,EAAI,EAAU,KAAK,EAAI,IAAA,EAChF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agimon-ai/doompi-cache",
3
- "version": "0.0.1-alpha.35",
3
+ "version": "0.0.1-alpha.37",
4
4
  "description": "Provider prompt cache policy and deterministic routing for DoomPi",
5
5
  "keywords": [
6
6
  "ai",
@@ -52,6 +52,11 @@
52
52
  "import": "./dist/extensions/pi.mjs",
53
53
  "require": "./dist/extensions/pi.cjs"
54
54
  },
55
+ "./extensions/server": {
56
+ "types": "./dist/extensions/server.d.mts",
57
+ "import": "./dist/extensions/server.mjs",
58
+ "require": "./dist/extensions/server.cjs"
59
+ },
55
60
  "./package.json": "./package.json"
56
61
  },
57
62
  "publishConfig": {
@@ -60,8 +65,9 @@
60
65
  "dependencies": {
61
66
  "@deepseek-ai/cordis": "4.0.2",
62
67
  "pi-cache-optimizer": "2.8.6",
63
- "@agimon-ai/doompi-config": "0.0.1-alpha.68",
64
- "@agimon-ai/doompi-extension-contracts": "0.0.1-alpha.68"
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"
65
71
  },
66
72
  "devDependencies": {
67
73
  "@earendil-works/pi-coding-agent": "0.85.1",
@@ -70,7 +76,7 @@
70
76
  "tsdown": "0.23.0",
71
77
  "typescript": "7.0.2",
72
78
  "vitest": "5.0.0",
73
- "@agimon-ai/vibe-lint-plugin-doom-extension": "0.0.1-alpha.65"
79
+ "@agimon-ai/vibe-lint-plugin-doom-extension": "0.0.1-alpha.66"
74
80
  },
75
81
  "peerDependencies": {
76
82
  "@earendil-works/pi-coding-agent": "0.85.1"
@@ -83,6 +89,17 @@
83
89
  "engines": {
84
90
  "node": ">=22.19.0"
85
91
  },
92
+ "doompiServer": {
93
+ "entry": "./src/extensions/server.ts",
94
+ "dist": "./dist/extensions/server.mjs",
95
+ "scopes": [
96
+ "session"
97
+ ],
98
+ "contracts": {
99
+ "entry": "./src/exports/apiContracts.ts",
100
+ "dist": "./dist/api-contracts.mjs"
101
+ }
102
+ },
86
103
  "pi": {
87
104
  "extensions": [
88
105
  "./dist/extensions/pi.mjs"
@@ -1 +0,0 @@
1
- {"version":3,"file":"digest.d.cts","names":[],"sources":["../../../src/adapters/node/digest.ts"],"mappings":";wBAEgB,gBAAgB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"digest.d.mts","names":[],"sources":["../../../src/adapters/node/digest.ts"],"mappings":";wBAEgB,gBAAgB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"promptCacheTelemetry.cjs","names":["Service"],"sources":["../../src/providers/promptCacheTelemetry.ts"],"sourcesContent":["import { type Context, Service } from '@deepseek-ai/cordis';\nimport type { PromptCacheTelemetryPort, PromptCacheTelemetrySnapshot } from '../types/cache.ts';\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":"qCAGA,MAAa,EAAsC,8BAEnD,IAAa,EAAb,cAAiDA,EAAAA,OAAQ,CAGpC,UAFnB,YACE,EACA,EACA,CACA,MAAM,EAAS,CAAmC,EAFjC,KAAA,UAAA,CAGnB,CAEA,UAAyC,CACvC,OAAO,KAAK,UAAU,SAAS,CACjC,CACF,EAEA,SAAgB,EAAyB,EAA2D,CAClG,OAAO,EAAQ,IAAI,CAAmC,CACxD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"promptCacheTelemetry.d.cts","names":[],"sources":["../../src/providers/promptCacheTelemetry.ts"],"mappings":";;;qBAGa;qBAEA,oCAAoC;mBAG5B;EAFnB,YACE,SAAS,SACQ,WAAW;EAK9B,YAAY;;wBAKE,yBAAyB,SAAS,UAAU;;YAKhD;IACR,+BAA+B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"promptCacheTelemetry.d.mts","names":[],"sources":["../../src/providers/promptCacheTelemetry.ts"],"mappings":";;;qBAGa;qBAEA,oCAAoC;mBAG5B;EAFnB,YACE,SAAS,SACQ,WAAW;EAK9B,YAAY;;wBAKE,yBAAyB,SAAS,UAAU;;YAKhD;IACR,+BAA+B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"promptCacheTelemetry.mjs","names":[],"sources":["../../src/providers/promptCacheTelemetry.ts"],"sourcesContent":["import { type Context, Service } from '@deepseek-ai/cordis';\nimport type { PromptCacheTelemetryPort, PromptCacheTelemetrySnapshot } from '../types/cache.ts';\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":"8CAGA,MAAa,EAAsC,8BAEnD,IAAa,EAAb,cAAiD,CAAQ,CAGpC,UAFnB,YACE,EACA,EACA,CACA,MAAM,EAAS,CAAmC,EAFjC,KAAA,UAAA,CAGnB,CAEA,UAAyC,CACvC,OAAO,KAAK,UAAU,SAAS,CACjC,CACF,EAEA,SAAgB,EAAyB,EAA2D,CAClG,OAAO,EAAQ,IAAI,CAAmC,CACxD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"canonical.cjs","names":[],"sources":["../../src/services/canonical.ts"],"sourcesContent":["export type CanonicalValue = null | boolean | number | string | readonly CanonicalValue[] | CanonicalObject;\n\nexport interface CanonicalObject {\n readonly [key: string]: CanonicalValue;\n}\n\nfunction canonicalNumber(value: number): number {\n if (!Number.isFinite(value)) throw new Error('Prompt cache identity cannot contain a non-finite number.');\n return Object.is(value, -0) ? 0 : value;\n}\n\nexport function canonicalValue(value: unknown): CanonicalValue {\n if (value === null) return null;\n if (typeof value === 'string') return value.normalize('NFC');\n if (typeof value === 'boolean') return value;\n if (typeof value === 'number') return canonicalNumber(value);\n if (Array.isArray(value)) return value.map((entry) => canonicalValue(entry));\n if (typeof value !== 'object') throw new Error(`Unsupported prompt cache identity value: ${typeof value}.`);\n\n const record = value as Readonly<Record<string, unknown>>;\n const result: Record<string, CanonicalValue> = {};\n for (const key of Object.keys(record).sort((left, right) => left.localeCompare(right))) {\n const entry = record[key];\n if (entry !== undefined) result[key.normalize('NFC')] = canonicalValue(entry);\n }\n return result;\n}\n\nexport function canonicalJson(value: unknown): string {\n return JSON.stringify(canonicalValue(value));\n}\n"],"mappings":"AAMA,SAAS,EAAgB,EAAuB,CAC9C,GAAI,CAAC,OAAO,SAAS,CAAK,EAAG,MAAU,MAAM,2DAA2D,EACxG,OAAO,OAAO,GAAG,EAAO,EAAE,EAAI,EAAI,CACpC,CAEA,SAAgB,EAAe,EAAgC,CAC7D,GAAI,IAAU,KAAM,OAAO,KAC3B,GAAI,OAAO,GAAU,SAAU,OAAO,EAAM,UAAU,KAAK,EAC3D,GAAI,OAAO,GAAU,UAAW,OAAO,EACvC,GAAI,OAAO,GAAU,SAAU,OAAO,EAAgB,CAAK,EAC3D,GAAI,MAAM,QAAQ,CAAK,EAAG,OAAO,EAAM,IAAK,GAAU,EAAe,CAAK,CAAC,EAC3E,GAAI,OAAO,GAAU,SAAU,MAAU,MAAM,4CAA4C,OAAO,EAAM,EAAE,EAE1G,IAAM,EAAS,EACT,EAAyC,CAAC,EAChD,IAAK,IAAM,KAAO,OAAO,KAAK,CAAM,CAAC,CAAC,MAAM,EAAM,IAAU,EAAK,cAAc,CAAK,CAAC,EAAG,CACtF,IAAM,EAAQ,EAAO,GACjB,IAAU,IAAA,KAAW,EAAO,EAAI,UAAU,KAAK,GAAK,EAAe,CAAK,EAC9E,CACA,OAAO,CACT,CAEA,SAAgB,EAAc,EAAwB,CACpD,OAAO,KAAK,UAAU,EAAe,CAAK,CAAC,CAC7C"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"canonical.d.cts","names":[],"sources":["../../src/services/canonical.ts"],"mappings":";YAAY,6DAA6D,mBAAmB;iBAE3E;YACL,cAAc;;wBAQV,eAAe,iBAAiB;wBAiBhC,cAAc"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"canonical.d.mts","names":[],"sources":["../../src/services/canonical.ts"],"mappings":";YAAY,6DAA6D,mBAAmB;iBAE3E;YACL,cAAc;;wBAQV,eAAe,iBAAiB;wBAiBhC,cAAc"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"canonical.mjs","names":[],"sources":["../../src/services/canonical.ts"],"sourcesContent":["export type CanonicalValue = null | boolean | number | string | readonly CanonicalValue[] | CanonicalObject;\n\nexport interface CanonicalObject {\n readonly [key: string]: CanonicalValue;\n}\n\nfunction canonicalNumber(value: number): number {\n if (!Number.isFinite(value)) throw new Error('Prompt cache identity cannot contain a non-finite number.');\n return Object.is(value, -0) ? 0 : value;\n}\n\nexport function canonicalValue(value: unknown): CanonicalValue {\n if (value === null) return null;\n if (typeof value === 'string') return value.normalize('NFC');\n if (typeof value === 'boolean') return value;\n if (typeof value === 'number') return canonicalNumber(value);\n if (Array.isArray(value)) return value.map((entry) => canonicalValue(entry));\n if (typeof value !== 'object') throw new Error(`Unsupported prompt cache identity value: ${typeof value}.`);\n\n const record = value as Readonly<Record<string, unknown>>;\n const result: Record<string, CanonicalValue> = {};\n for (const key of Object.keys(record).sort((left, right) => left.localeCompare(right))) {\n const entry = record[key];\n if (entry !== undefined) result[key.normalize('NFC')] = canonicalValue(entry);\n }\n return result;\n}\n\nexport function canonicalJson(value: unknown): string {\n return JSON.stringify(canonicalValue(value));\n}\n"],"mappings":"AAMA,SAAS,EAAgB,EAAuB,CAC9C,GAAI,CAAC,OAAO,SAAS,CAAK,EAAG,MAAU,MAAM,2DAA2D,EACxG,OAAO,OAAO,GAAG,EAAO,EAAE,EAAI,EAAI,CACpC,CAEA,SAAgB,EAAe,EAAgC,CAC7D,GAAI,IAAU,KAAM,OAAO,KAC3B,GAAI,OAAO,GAAU,SAAU,OAAO,EAAM,UAAU,KAAK,EAC3D,GAAI,OAAO,GAAU,UAAW,OAAO,EACvC,GAAI,OAAO,GAAU,SAAU,OAAO,EAAgB,CAAK,EAC3D,GAAI,MAAM,QAAQ,CAAK,EAAG,OAAO,EAAM,IAAK,GAAU,EAAe,CAAK,CAAC,EAC3E,GAAI,OAAO,GAAU,SAAU,MAAU,MAAM,4CAA4C,OAAO,EAAM,EAAE,EAE1G,IAAM,EAAS,EACT,EAAyC,CAAC,EAChD,IAAK,IAAM,KAAO,OAAO,KAAK,CAAM,CAAC,CAAC,MAAM,EAAM,IAAU,EAAK,cAAc,CAAK,CAAC,EAAG,CACtF,IAAM,EAAQ,EAAO,GACjB,IAAU,IAAA,KAAW,EAAO,EAAI,UAAU,KAAK,GAAK,EAAe,CAAK,EAC9E,CACA,OAAO,CACT,CAEA,SAAgB,EAAc,EAAwB,CACpD,OAAO,KAAK,UAAU,EAAe,CAAK,CAAC,CAC7C"}
@@ -1,2 +0,0 @@
1
- const e=require("./canonical.cjs");function t(t,n,r){return`${t}${r(e.canonicalJson(n))}`}function n(e){return e?.trim().replaceAll(`\\`,`/`)||void 0}function r(e){return e.filter(({activation:e})=>e===`active`||e===`activating`).map(({source:e,id:t,modelContextVariant:n})=>({source:e,id:t,...n?{modelContextVariant:n}:{}})).sort((e,t)=>e.source.localeCompare(t.source)||e.id.localeCompare(t.id))}function i(e,n){return t(`dpr1_`,{version:1,rootSessionId:e},n)}function a(e,a){return t(`dpn1_`,{version:1,rootSession:i(e.rootSessionId,a),compositionFingerprint:e.compositionFingerprint??null,majorMode:e.majorMode,domains:[...e.domains],profile:e.profile??null,persona:n(e.persona)??null,minorModes:r(e.minorModes)},a)}function o(e,n){return t(`dch1_`,{version:1,systemPrompt:e.systemPrompt??null,tools:[...e.tools],excludedTools:[...e.excludedTools].sort((e,t)=>e.localeCompare(t)),extensions:[...e.extensions],inheritProjectContext:e.inheritProjectContext??null,inheritSkills:e.inheritSkills??null,fanout:e.fanout??null,structuredOutputSchema:e.structuredOutputSchema??null},n)}function s(e,n){return t(`dpm1_`,{version:1,virtualProvider:e.virtualProvider??null,virtualModel:e.virtualModel??null,api:e.api??null,baseUrl:e.baseUrl??null,wireModel:e.wireModel??null},n)}function c(e,n,r,i,a){return t(`dpc1_`,{version:1,parentNamespace:e,scope:n,childProjection:a??null,modelFingerprint:r},i)}exports.createChildPromptCacheProjection=o,exports.createParentPromptCacheNamespace=a,exports.createPromptCacheKey=c,exports.createPromptCacheModelFingerprint=s,exports.createRootSessionIdentity=i;
2
- //# sourceMappingURL=namespace.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"namespace.cjs","names":["canonicalJson"],"sources":["../../src/services/namespace.ts"],"sourcesContent":["import type {\n PromptCacheChildProjection,\n PromptCacheDigest,\n PromptCacheMinorModeState,\n PromptCacheModelIdentity,\n PromptCacheParentState,\n} from '../types/cache.ts';\nimport { canonicalJson } from './canonical.ts';\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":"mCAeA,SAAS,EAAe,EAAgB,EAAgB,EAAmC,CACzF,MAAO,GAAG,IAAS,EAAOA,EAAAA,cAAc,CAAK,CAAC,GAChD,CAEA,SAAS,EAAkB,EAA+C,CAExE,OADmB,GAAO,KAAK,CAAC,CAAC,WAAW,KAAM,GAAG,GAChC,IAAA,EACvB,CAEA,SAAS,EAAiB,EAAgF,CACxG,OAAO,EACJ,QAAQ,CAAE,gBAAiB,IAAe,UAAY,IAAe,YAAY,CAAC,CAClF,KAAK,CAAE,SAAQ,KAAI,0BAA2B,CAC7C,SACA,KACA,GAAI,EAAsB,CAAE,qBAAoB,EAAI,CAAC,CACvD,EAAE,CAAC,CACF,MAAM,EAAM,IAAU,EAAK,OAAO,cAAc,EAAM,MAAM,GAAK,EAAK,GAAG,cAAc,EAAM,EAAE,CAAC,CACrG,CAEA,SAAgB,EAA0B,EAAuB,EAAmC,CAClG,OAAO,EAAe,QAAa,CAAE,QAAS,EAAG,eAAc,EAAG,CAAM,CAC1E,CAEA,SAAgB,EAAiC,EAA+B,EAAmC,CACjH,OAAO,EACL,QACA,CACE,QAAS,EACT,YAAa,EAA0B,EAAM,cAAe,CAAM,EAClE,uBAAwB,EAAM,wBAA0B,KACxD,UAAW,EAAM,UACjB,QAAS,CAAC,GAAG,EAAM,OAAO,EAC1B,QAAS,EAAM,SAAW,KAC1B,QAAS,EAAkB,EAAM,OAAO,GAAK,KAC7C,WAAY,EAAiB,EAAM,UAAU,CAC/C,EACA,CACF,CACF,CAEA,SAAgB,EACd,EACA,EACQ,CACR,OAAO,EACL,QACA,CACE,QAAS,EACT,aAAc,EAAW,cAAgB,KACzC,MAAO,CAAC,GAAG,EAAW,KAAK,EAC3B,cAAe,CAAC,GAAG,EAAW,aAAa,CAAC,CAAC,MAAM,EAAM,IAAU,EAAK,cAAc,CAAK,CAAC,EAC5F,WAAY,CAAC,GAAG,EAAW,UAAU,EACrC,sBAAuB,EAAW,uBAAyB,KAC3D,cAAe,EAAW,eAAiB,KAC3C,OAAQ,EAAW,QAAU,KAC7B,uBAAwB,EAAW,wBAA0B,IAC/D,EACA,CACF,CACF,CAEA,SAAgB,EAAkC,EAAiC,EAAmC,CACpH,OAAO,EACL,QACA,CACE,QAAS,EACT,gBAAiB,EAAM,iBAAmB,KAC1C,aAAc,EAAM,cAAgB,KACpC,IAAK,EAAM,KAAO,KAClB,QAAS,EAAM,SAAW,KAC1B,UAAW,EAAM,WAAa,IAChC,EACA,CACF,CACF,CAEA,SAAgB,EACd,EACA,EACA,EACA,EACA,EACQ,CACR,OAAO,EACL,QACA,CACE,QAAS,EACT,kBACA,QACA,gBAAiB,GAAmB,KACpC,kBACF,EACA,CACF,CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"namespace.d.cts","names":[],"sources":["../../src/services/namespace.ts"],"mappings":";;wBAmCgB,0BAA0B,uBAAuB,QAAQ;wBAIzD,iCAAiC,OAAO,wBAAwB,QAAQ;wBAiBxE,iCACd,YAAY,4BACZ,QAAQ;wBAmBM,kCAAkC,OAAO,0BAA0B,QAAQ;wBAe3E,qBACd,yBACA,2BACA,0BACA,QAAQ,mBACR"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"namespace.d.mts","names":[],"sources":["../../src/services/namespace.ts"],"mappings":";;wBAmCgB,0BAA0B,uBAAuB,QAAQ;wBAIzD,iCAAiC,OAAO,wBAAwB,QAAQ;wBAiBxE,iCACd,YAAY,4BACZ,QAAQ;wBAmBM,kCAAkC,OAAO,0BAA0B,QAAQ;wBAe3E,qBACd,yBACA,2BACA,0BACA,QAAQ,mBACR"}
@@ -1,2 +0,0 @@
1
- import{canonicalJson as e}from"./canonical.mjs";function t(t,n,r){return`${t}${r(e(n))}`}function n(e){return e?.trim().replaceAll(`\\`,`/`)||void 0}function r(e){return e.filter(({activation:e})=>e===`active`||e===`activating`).map(({source:e,id:t,modelContextVariant:n})=>({source:e,id:t,...n?{modelContextVariant:n}:{}})).sort((e,t)=>e.source.localeCompare(t.source)||e.id.localeCompare(t.id))}function i(e,n){return t(`dpr1_`,{version:1,rootSessionId:e},n)}function a(e,a){return t(`dpn1_`,{version:1,rootSession:i(e.rootSessionId,a),compositionFingerprint:e.compositionFingerprint??null,majorMode:e.majorMode,domains:[...e.domains],profile:e.profile??null,persona:n(e.persona)??null,minorModes:r(e.minorModes)},a)}function o(e,n){return t(`dch1_`,{version:1,systemPrompt:e.systemPrompt??null,tools:[...e.tools],excludedTools:[...e.excludedTools].sort((e,t)=>e.localeCompare(t)),extensions:[...e.extensions],inheritProjectContext:e.inheritProjectContext??null,inheritSkills:e.inheritSkills??null,fanout:e.fanout??null,structuredOutputSchema:e.structuredOutputSchema??null},n)}function s(e,n){return t(`dpm1_`,{version:1,virtualProvider:e.virtualProvider??null,virtualModel:e.virtualModel??null,api:e.api??null,baseUrl:e.baseUrl??null,wireModel:e.wireModel??null},n)}function c(e,n,r,i,a){return t(`dpc1_`,{version:1,parentNamespace:e,scope:n,childProjection:a??null,modelFingerprint:r},i)}export{o as createChildPromptCacheProjection,a as createParentPromptCacheNamespace,c as createPromptCacheKey,s as createPromptCacheModelFingerprint,i as createRootSessionIdentity};
2
- //# sourceMappingURL=namespace.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"namespace.mjs","names":[],"sources":["../../src/services/namespace.ts"],"sourcesContent":["import type {\n PromptCacheChildProjection,\n PromptCacheDigest,\n PromptCacheMinorModeState,\n PromptCacheModelIdentity,\n PromptCacheParentState,\n} from '../types/cache.ts';\nimport { canonicalJson } from './canonical.ts';\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":"gDAeA,SAAS,EAAe,EAAgB,EAAgB,EAAmC,CACzF,MAAO,GAAG,IAAS,EAAO,EAAc,CAAK,CAAC,GAChD,CAEA,SAAS,EAAkB,EAA+C,CAExE,OADmB,GAAO,KAAK,CAAC,CAAC,WAAW,KAAM,GAAG,GAChC,IAAA,EACvB,CAEA,SAAS,EAAiB,EAAgF,CACxG,OAAO,EACJ,QAAQ,CAAE,gBAAiB,IAAe,UAAY,IAAe,YAAY,CAAC,CAClF,KAAK,CAAE,SAAQ,KAAI,0BAA2B,CAC7C,SACA,KACA,GAAI,EAAsB,CAAE,qBAAoB,EAAI,CAAC,CACvD,EAAE,CAAC,CACF,MAAM,EAAM,IAAU,EAAK,OAAO,cAAc,EAAM,MAAM,GAAK,EAAK,GAAG,cAAc,EAAM,EAAE,CAAC,CACrG,CAEA,SAAgB,EAA0B,EAAuB,EAAmC,CAClG,OAAO,EAAe,QAAa,CAAE,QAAS,EAAG,eAAc,EAAG,CAAM,CAC1E,CAEA,SAAgB,EAAiC,EAA+B,EAAmC,CACjH,OAAO,EACL,QACA,CACE,QAAS,EACT,YAAa,EAA0B,EAAM,cAAe,CAAM,EAClE,uBAAwB,EAAM,wBAA0B,KACxD,UAAW,EAAM,UACjB,QAAS,CAAC,GAAG,EAAM,OAAO,EAC1B,QAAS,EAAM,SAAW,KAC1B,QAAS,EAAkB,EAAM,OAAO,GAAK,KAC7C,WAAY,EAAiB,EAAM,UAAU,CAC/C,EACA,CACF,CACF,CAEA,SAAgB,EACd,EACA,EACQ,CACR,OAAO,EACL,QACA,CACE,QAAS,EACT,aAAc,EAAW,cAAgB,KACzC,MAAO,CAAC,GAAG,EAAW,KAAK,EAC3B,cAAe,CAAC,GAAG,EAAW,aAAa,CAAC,CAAC,MAAM,EAAM,IAAU,EAAK,cAAc,CAAK,CAAC,EAC5F,WAAY,CAAC,GAAG,EAAW,UAAU,EACrC,sBAAuB,EAAW,uBAAyB,KAC3D,cAAe,EAAW,eAAiB,KAC3C,OAAQ,EAAW,QAAU,KAC7B,uBAAwB,EAAW,wBAA0B,IAC/D,EACA,CACF,CACF,CAEA,SAAgB,EAAkC,EAAiC,EAAmC,CACpH,OAAO,EACL,QACA,CACE,QAAS,EACT,gBAAiB,EAAM,iBAAmB,KAC1C,aAAc,EAAM,cAAgB,KACpC,IAAK,EAAM,KAAO,KAClB,QAAS,EAAM,SAAW,KAC1B,UAAW,EAAM,WAAa,IAChC,EACA,CACF,CACF,CAEA,SAAgB,EACd,EACA,EACA,EACA,EACA,EACQ,CACR,OAAO,EACL,QACA,CACE,QAAS,EACT,kBACA,QACA,gBAAiB,GAAmB,KACpC,kBACF,EACA,CACF,CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"providerPolicy.d.cts","names":[],"sources":["../../src/services/providerPolicy.ts"],"mappings":";;wBAgBgB,8BAA8B,OAAO,2BAA2B;wBAUhE,sBACd,kBACA,yBACA,aACA,mBACC;wBAOa,8BAA8B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"providerPolicy.d.mts","names":[],"sources":["../../src/services/providerPolicy.ts"],"mappings":";;wBAgBgB,8BAA8B,OAAO,2BAA2B;wBAUhE,sBACd,kBACA,yBACA,aACA,mBACC;wBAOa,8BAA8B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"telemetry.cjs","names":[],"sources":["../../src/services/telemetry.ts"],"sourcesContent":["import type {\n PromptCacheObservation,\n PromptCacheRequestStatus,\n PromptCacheTelemetryPort,\n PromptCacheTelemetrySnapshot,\n PromptCacheUsage,\n} from '../types/cache.ts';\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":"telemetry.d.cts","names":[],"sources":["../../src/services/telemetry.ts"],"mappings":";;qBAUa,gCAAgC;;EAK3C,YAAY;EAMZ,aAAa,QAAQ;EAIrB,QAAQ,OAAO,kBAAkB;EAkBjC,YAAY;EAUZ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"telemetry.d.mts","names":[],"sources":["../../src/services/telemetry.ts"],"mappings":";;qBAUa,gCAAgC;;EAK3C,YAAY;EAMZ,aAAa,QAAQ;EAIrB,QAAQ,OAAO,kBAAkB;EAkBjC,YAAY;EAUZ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"telemetry.mjs","names":[],"sources":["../../src/services/telemetry.ts"],"sourcesContent":["import type {\n PromptCacheObservation,\n PromptCacheRequestStatus,\n PromptCacheTelemetryPort,\n PromptCacheTelemetrySnapshot,\n PromptCacheUsage,\n} from '../types/cache.ts';\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":"environment.cjs","names":[],"sources":["../../src/types/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/types/environment.ts"],"mappings":";qBAAa;qBACA;qBACA;qBACA;qBACA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"environment.d.mts","names":[],"sources":["../../src/types/environment.ts"],"mappings":";qBAAa;qBACA;qBACA;qBACA;qBACA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"environment.mjs","names":[],"sources":["../../src/types/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"}
File without changes
File without changes