@agimon-ai/doompi-cache 0.0.1-alpha.7 → 0.0.1-alpha.71

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 (158) hide show
  1. package/README.md +7 -1
  2. package/dist/apiContracts.cjs +17 -0
  3. package/dist/apiContracts.cjs.map +1 -0
  4. package/dist/apiContracts.d.mts +53 -0
  5. package/dist/apiContracts.d.mts.map +1 -0
  6. package/dist/apiContracts.mjs +13 -0
  7. package/dist/apiContracts.mjs.map +1 -0
  8. package/dist/env.cjs +7 -1
  9. package/dist/env.d.mts +1 -1
  10. package/dist/env.mjs +2 -1
  11. package/dist/extensions/mcp.cjs +26 -0
  12. package/dist/extensions/mcp.cjs.map +1 -0
  13. package/dist/extensions/mcp.d.mts +5 -0
  14. package/dist/extensions/mcp.d.mts.map +1 -0
  15. package/dist/extensions/mcp.mjs +21 -0
  16. package/dist/extensions/mcp.mjs.map +1 -0
  17. package/dist/extensions/pi.cjs +458 -1
  18. package/dist/extensions/pi.cjs.map +1 -1
  19. package/dist/extensions/pi.d.mts +3 -4
  20. package/dist/extensions/pi.d.mts.map +1 -1
  21. package/dist/extensions/pi.mjs +453 -1
  22. package/dist/extensions/pi.mjs.map +1 -1
  23. package/dist/extensions/server.cjs +24 -0
  24. package/dist/extensions/server.cjs.map +1 -0
  25. package/dist/extensions/server.d.mts +5 -0
  26. package/dist/extensions/server.d.mts.map +1 -0
  27. package/dist/extensions/server.mjs +19 -0
  28. package/dist/extensions/server.mjs.map +1 -0
  29. package/dist/index.cjs +22 -1
  30. package/dist/index.d.mts +7 -7
  31. package/dist/index.mjs +7 -1
  32. package/dist/pi-cache-optimizer-5NIMHAtT.cjs +8579 -0
  33. package/dist/pi-cache-optimizer-5NIMHAtT.cjs.map +1 -0
  34. package/dist/pi-cache-optimizer-EMbP1t9X.mjs +8578 -0
  35. package/dist/pi-cache-optimizer-EMbP1t9X.mjs.map +1 -0
  36. package/dist/src/constants/environment.cjs +14 -0
  37. package/dist/src/constants/environment.cjs.map +1 -0
  38. package/dist/src/constants/environment.d.mts +8 -0
  39. package/dist/src/constants/environment.d.mts.map +1 -0
  40. package/dist/src/constants/environment.mjs +10 -0
  41. package/dist/src/constants/environment.mjs.map +1 -0
  42. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/cacheHooks.cjs +47 -0
  43. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/cacheHooks.cjs.map +1 -0
  44. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/cacheHooks.mjs +47 -0
  45. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/cacheHooks.mjs.map +1 -0
  46. package/dist/src/extensions/workspaces/sessions/(backend)/hook/before-provider-request.server.cjs +7 -0
  47. package/dist/src/extensions/workspaces/sessions/(backend)/hook/before-provider-request.server.cjs.map +1 -0
  48. package/dist/src/extensions/workspaces/sessions/(backend)/hook/before-provider-request.server.mjs +8 -0
  49. package/dist/src/extensions/workspaces/sessions/(backend)/hook/before-provider-request.server.mjs.map +1 -0
  50. package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-shutdown.server.cjs +7 -0
  51. package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-shutdown.server.cjs.map +1 -0
  52. package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-shutdown.server.mjs +8 -0
  53. package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-shutdown.server.mjs.map +1 -0
  54. package/dist/src/models/promptCacheTelemetry.cjs +45 -0
  55. package/dist/src/models/promptCacheTelemetry.cjs.map +1 -0
  56. package/dist/{services/telemetry.d.mts → src/models/promptCacheTelemetry.d.mts} +3 -4
  57. package/dist/src/models/promptCacheTelemetry.d.mts.map +1 -0
  58. package/dist/src/models/promptCacheTelemetry.mjs +45 -0
  59. package/dist/src/models/promptCacheTelemetry.mjs.map +1 -0
  60. package/dist/src/services/canonical/index.cjs +28 -0
  61. package/dist/src/services/canonical/index.cjs.map +1 -0
  62. package/dist/src/services/canonical/index.d.mts +9 -0
  63. package/dist/src/services/canonical/index.d.mts.map +1 -0
  64. package/dist/src/services/canonical/index.mjs +27 -0
  65. package/dist/src/services/canonical/index.mjs.map +1 -0
  66. package/dist/src/services/digest/index.cjs +9 -0
  67. package/dist/src/services/digest/index.cjs.map +1 -0
  68. package/dist/src/services/digest/index.d.mts +4 -0
  69. package/dist/src/services/digest/index.d.mts.map +1 -0
  70. package/dist/src/services/digest/index.mjs +9 -0
  71. package/dist/src/services/digest/index.mjs.map +1 -0
  72. package/dist/src/services/namespace/index.cjs +78 -0
  73. package/dist/src/services/namespace/index.cjs.map +1 -0
  74. package/dist/src/services/namespace/index.d.mts +9 -0
  75. package/dist/src/services/namespace/index.d.mts.map +1 -0
  76. package/dist/src/services/namespace/index.mjs +74 -0
  77. package/dist/src/services/namespace/index.mjs.map +1 -0
  78. package/dist/src/services/promptCacheTelemetry/index.cjs +22 -0
  79. package/dist/src/services/promptCacheTelemetry/index.cjs.map +1 -0
  80. package/dist/src/services/promptCacheTelemetry/index.d.mts +17 -0
  81. package/dist/src/services/promptCacheTelemetry/index.d.mts.map +1 -0
  82. package/dist/src/services/promptCacheTelemetry/index.mjs +20 -0
  83. package/dist/src/services/promptCacheTelemetry/index.mjs.map +1 -0
  84. package/dist/src/services/providerPolicy/index.cjs +43 -0
  85. package/dist/src/services/providerPolicy/index.cjs.map +1 -0
  86. package/dist/src/services/providerPolicy/index.d.mts +7 -0
  87. package/dist/src/services/providerPolicy/index.d.mts.map +1 -0
  88. package/dist/src/services/providerPolicy/index.mjs +41 -0
  89. package/dist/src/services/providerPolicy/index.mjs.map +1 -0
  90. package/dist/{types → src/types}/cache.d.mts +11 -12
  91. package/dist/src/types/cache.d.mts.map +1 -0
  92. package/package.json +40 -14
  93. package/dist/adapters/node/digest.cjs +0 -2
  94. package/dist/adapters/node/digest.cjs.map +0 -1
  95. package/dist/adapters/node/digest.d.cts +0 -5
  96. package/dist/adapters/node/digest.d.cts.map +0 -1
  97. package/dist/adapters/node/digest.d.mts +0 -5
  98. package/dist/adapters/node/digest.d.mts.map +0 -1
  99. package/dist/adapters/node/digest.mjs +0 -2
  100. package/dist/adapters/node/digest.mjs.map +0 -1
  101. package/dist/env.d.cts +0 -2
  102. package/dist/extensions/pi.d.cts +0 -43
  103. package/dist/extensions/pi.d.cts.map +0 -1
  104. package/dist/index.d.cts +0 -8
  105. package/dist/pi-cache-optimizer-B7B911Pz.cjs +0 -54
  106. package/dist/pi-cache-optimizer-B7B911Pz.cjs.map +0 -1
  107. package/dist/pi-cache-optimizer-CjPVk06Q.mjs +0 -54
  108. package/dist/pi-cache-optimizer-CjPVk06Q.mjs.map +0 -1
  109. package/dist/providers/promptCacheTelemetry.cjs +0 -2
  110. package/dist/providers/promptCacheTelemetry.cjs.map +0 -1
  111. package/dist/providers/promptCacheTelemetry.d.cts +0 -18
  112. package/dist/providers/promptCacheTelemetry.d.cts.map +0 -1
  113. package/dist/providers/promptCacheTelemetry.d.mts +0 -18
  114. package/dist/providers/promptCacheTelemetry.d.mts.map +0 -1
  115. package/dist/providers/promptCacheTelemetry.mjs +0 -2
  116. package/dist/providers/promptCacheTelemetry.mjs.map +0 -1
  117. package/dist/services/canonical.cjs +0 -2
  118. package/dist/services/canonical.cjs.map +0 -1
  119. package/dist/services/canonical.d.cts +0 -10
  120. package/dist/services/canonical.d.cts.map +0 -1
  121. package/dist/services/canonical.d.mts +0 -10
  122. package/dist/services/canonical.d.mts.map +0 -1
  123. package/dist/services/canonical.mjs +0 -2
  124. package/dist/services/canonical.mjs.map +0 -1
  125. package/dist/services/namespace.cjs +0 -2
  126. package/dist/services/namespace.cjs.map +0 -1
  127. package/dist/services/namespace.d.cts +0 -10
  128. package/dist/services/namespace.d.cts.map +0 -1
  129. package/dist/services/namespace.d.mts +0 -10
  130. package/dist/services/namespace.d.mts.map +0 -1
  131. package/dist/services/namespace.mjs +0 -2
  132. package/dist/services/namespace.mjs.map +0 -1
  133. package/dist/services/providerPolicy.cjs +0 -2
  134. package/dist/services/providerPolicy.cjs.map +0 -1
  135. package/dist/services/providerPolicy.d.cts +0 -8
  136. package/dist/services/providerPolicy.d.cts.map +0 -1
  137. package/dist/services/providerPolicy.d.mts +0 -8
  138. package/dist/services/providerPolicy.d.mts.map +0 -1
  139. package/dist/services/providerPolicy.mjs +0 -2
  140. package/dist/services/providerPolicy.mjs.map +0 -1
  141. package/dist/services/telemetry.cjs +0 -2
  142. package/dist/services/telemetry.cjs.map +0 -1
  143. package/dist/services/telemetry.d.cts +0 -13
  144. package/dist/services/telemetry.d.cts.map +0 -1
  145. package/dist/services/telemetry.d.mts.map +0 -1
  146. package/dist/services/telemetry.mjs +0 -2
  147. package/dist/services/telemetry.mjs.map +0 -1
  148. package/dist/types/cache.d.cts +0 -68
  149. package/dist/types/cache.d.cts.map +0 -1
  150. package/dist/types/cache.d.mts.map +0 -1
  151. package/dist/types/environment.cjs +0 -2
  152. package/dist/types/environment.cjs.map +0 -1
  153. package/dist/types/environment.d.cts +0 -9
  154. package/dist/types/environment.d.cts.map +0 -1
  155. package/dist/types/environment.d.mts +0 -9
  156. package/dist/types/environment.d.mts.map +0 -1
  157. package/dist/types/environment.mjs +0 -2
  158. package/dist/types/environment.mjs.map +0 -1
@@ -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,17 @@
1
+ import { PromptCacheTelemetryPort, PromptCacheTelemetrySnapshot } from "../../types/cache.mjs";
2
+ import { Context, Service } from "@deepseek-ai/cordis";
3
+ //#region src/services/promptCacheTelemetry/index.d.ts
4
+ export declare const DOOM_PROMPT_CACHE_TELEMETRY_SERVICE = "doom/prompt-cache-telemetry";
5
+ export declare class PromptCacheTelemetryService extends Service {
6
+ private readonly telemetry;
7
+ constructor(context: Context, telemetry: PromptCacheTelemetryPort);
8
+ snapshot(): PromptCacheTelemetrySnapshot;
9
+ }
10
+ export declare function readPromptCacheTelemetry(context: Context): PromptCacheTelemetryService | undefined;
11
+ declare module '@deepseek-ai/cordis' {
12
+ interface Context {
13
+ 'doom/prompt-cache-telemetry': PromptCacheTelemetryService;
14
+ }
15
+ }
16
+ //#endregion
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"}
@@ -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,7 @@
1
+ import { PromptCacheCapabilityClass, PromptCacheModelIdentity } from "../../types/cache.mjs";
2
+ //#region src/services/providerPolicy/index.d.ts
3
+ export declare function classifyPromptCacheCapability(model: PromptCacheModelIdentity): PromptCacheCapabilityClass;
4
+ export declare function rewritePromptCacheKey(payload: unknown, api: string | undefined, key: string, enabled: boolean): Record<string, unknown> | undefined;
5
+ export declare function requestedPromptCacheRetention(payload: unknown): string | undefined;
6
+ //#endregion
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"}
@@ -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"}
@@ -1,12 +1,12 @@
1
1
  //#region src/types/cache.d.ts
2
- type PromptCacheCapabilityClass = 'key-and-long-retention' | 'key-only' | 'marker-only' | 'automatic' | 'unknown';
3
- interface PromptCacheMinorModeState {
2
+ export type PromptCacheCapabilityClass = 'key-and-long-retention' | 'key-only' | 'marker-only' | 'automatic' | 'unknown';
3
+ export interface PromptCacheMinorModeState {
4
4
  readonly source: string;
5
5
  readonly id: string;
6
6
  readonly activation: string;
7
7
  readonly modelContextVariant?: string;
8
8
  }
9
- interface PromptCacheParentState {
9
+ export interface PromptCacheParentState {
10
10
  readonly rootSessionId: string;
11
11
  readonly compositionFingerprint?: string;
12
12
  readonly majorMode: string;
@@ -15,7 +15,7 @@ interface PromptCacheParentState {
15
15
  readonly persona?: string;
16
16
  readonly minorModes: readonly PromptCacheMinorModeState[];
17
17
  }
18
- interface PromptCacheChildProjection {
18
+ export interface PromptCacheChildProjection {
19
19
  readonly systemPrompt?: string;
20
20
  readonly tools: readonly string[];
21
21
  readonly excludedTools: readonly string[];
@@ -25,44 +25,43 @@ interface PromptCacheChildProjection {
25
25
  readonly fanout?: boolean;
26
26
  readonly structuredOutputSchema?: unknown;
27
27
  }
28
- interface PromptCacheModelIdentity {
28
+ export interface PromptCacheModelIdentity {
29
29
  readonly virtualProvider?: string;
30
30
  readonly virtualModel?: string;
31
31
  readonly api?: string;
32
32
  readonly baseUrl?: string;
33
33
  readonly wireModel?: string;
34
34
  }
35
- interface PromptCacheDigest {
35
+ export interface PromptCacheDigest {
36
36
  (value: string): string;
37
37
  }
38
- interface PromptCacheUsage {
38
+ export interface PromptCacheUsage {
39
39
  readonly cacheRead: number;
40
40
  readonly cacheWrite: number;
41
41
  readonly totalInput: number;
42
42
  }
43
- interface PromptCacheObservation extends PromptCacheUsage {
43
+ export interface PromptCacheObservation extends PromptCacheUsage {
44
44
  readonly namespace: string;
45
45
  readonly modelFingerprint: string;
46
46
  readonly observedAt: number;
47
47
  }
48
- interface PromptCacheRequestStatus {
48
+ export interface PromptCacheRequestStatus {
49
49
  readonly capability: PromptCacheCapabilityClass;
50
50
  readonly namespace?: string;
51
51
  readonly modelFingerprint?: string;
52
52
  readonly requestedRetention?: string;
53
53
  readonly keySuffix?: string;
54
54
  }
55
- interface PromptCacheTelemetrySnapshot extends PromptCacheRequestStatus {
55
+ export interface PromptCacheTelemetrySnapshot extends PromptCacheRequestStatus {
56
56
  readonly residency: 'unknown';
57
57
  readonly observations: readonly PromptCacheObservation[];
58
58
  readonly lastObservation?: PromptCacheObservation;
59
59
  }
60
- interface PromptCacheTelemetryPort {
60
+ export interface PromptCacheTelemetryPort {
61
61
  beginRequest(status: PromptCacheRequestStatus): void;
62
62
  observe(usage: PromptCacheUsage, observedAt: number): void;
63
63
  snapshot(): PromptCacheTelemetrySnapshot;
64
64
  reset(): void;
65
65
  }
66
66
  //#endregion
67
- export { PromptCacheCapabilityClass, PromptCacheChildProjection, PromptCacheDigest, PromptCacheMinorModeState, PromptCacheModelIdentity, PromptCacheObservation, PromptCacheParentState, PromptCacheRequestStatus, PromptCacheTelemetryPort, PromptCacheTelemetrySnapshot, PromptCacheUsage };
68
67
  //# sourceMappingURL=cache.d.mts.map
@@ -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.7",
3
+ "version": "0.0.1-alpha.71",
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/core/doompi-cache"
25
+ "directory": "packages/foundations/doompi-cache"
26
26
  },
27
27
  "files": [
28
28
  "dist",
@@ -52,28 +52,35 @@
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": {
58
63
  "access": "public"
59
64
  },
60
65
  "dependencies": {
61
- "@deepseek-ai/cordis": "4.0.1",
62
- "pi-cache-optimizer": "2.8.3",
63
- "@agimon-ai/doompi-config": "0.0.1-alpha.40",
64
- "@agimon-ai/doompi-extension-contracts": "0.0.1-alpha.40"
66
+ "@agimon-ai/doompi-config": "0.0.1-alpha.104",
67
+ "@agimon-ai/doompi-core": "0.0.1-alpha.105",
68
+ "@agimon-ai/doompi-minor-mode": "0.0.1-alpha.105",
69
+ "@deepseek-ai/cordis": "4.0.2",
70
+ "pi-cache-optimizer": "2.8.10"
65
71
  },
66
72
  "devDependencies": {
67
- "@earendil-works/pi-coding-agent": "0.84.3",
68
- "@types/node": "26.2.0",
69
- "@vitest/coverage-v8": "4.1.11",
70
- "tsdown": "0.22.14",
73
+ "@agimon-ai/doompi-build": "0.0.1-alpha.24",
74
+ "@agimon-ai/vibe-lint-plugin-doom-extension": "0.0.1-alpha.90",
75
+ "@earendil-works/pi-coding-agent": "0.99.1",
76
+ "@types/node": "26.6.2",
77
+ "@vitest/coverage-v8": "5.0.1",
78
+ "tsdown": "0.23.0",
71
79
  "typescript": "7.0.2",
72
- "vitest": "4.1.11",
73
- "@agimon-ai/vibe-lint-plugin-doom-extension": "0.0.1-alpha.38"
80
+ "vitest": "5.0.1"
74
81
  },
75
82
  "peerDependencies": {
76
- "@earendil-works/pi-coding-agent": "0.84.3"
83
+ "@earendil-works/pi-coding-agent": "0.99.1"
77
84
  },
78
85
  "peerDependenciesMeta": {
79
86
  "@earendil-works/pi-coding-agent": {
@@ -83,13 +90,32 @@
83
90
  "engines": {
84
91
  "node": ">=22.19.0"
85
92
  },
93
+ "doompiMcp": {
94
+ "entry": "./generated/mcp.ts",
95
+ "dist": "./dist/extensions/mcp.mjs",
96
+ "scopes": [
97
+ "session"
98
+ ]
99
+ },
100
+ "doompiServer": {
101
+ "entry": "./generated/server.ts",
102
+ "dist": "./dist/extensions/server.mjs",
103
+ "scopes": [
104
+ "session"
105
+ ],
106
+ "contracts": {
107
+ "entry": "./src/exports/apiContracts.ts",
108
+ "dist": "./dist/apiContracts.mjs"
109
+ }
110
+ },
86
111
  "pi": {
87
112
  "extensions": [
88
113
  "./dist/extensions/pi.mjs"
89
114
  ]
90
115
  },
91
116
  "scripts": {
92
- "build": "tsdown",
117
+ "build": "tsdown && tsdown --config tsdown.mcp.config.ts",
118
+ "build:mcp": "tsdown --config tsdown.mcp.config.ts",
93
119
  "test": "vitest --run",
94
120
  "typecheck": "tsc --noEmit",
95
121
  "lint": "oxlint . && oxfmt . --check",
@@ -1,2 +0,0 @@
1
- let e=require("node:crypto");function t(t){return(0,e.createHash)(`sha256`).update(t).digest(`base64url`)}exports.sha256Base64Url=t;
2
- //# sourceMappingURL=digest.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"digest.cjs","names":["createHash"],"sources":["../../../src/adapters/node/digest.ts"],"sourcesContent":["import { createHash } from 'node:crypto';\n\nexport function sha256Base64Url(value: string): string {\n return createHash('sha256').update(value).digest('base64url');\n}\n"],"mappings":"6BAEA,SAAgB,EAAgB,EAAuB,CACrD,OAAA,EAAOA,EAAAA,WAAAA,CAAW,QAAQ,CAAC,CAAC,OAAO,CAAK,CAAC,CAAC,OAAO,WAAW,CAC9D"}
@@ -1,5 +0,0 @@
1
- //#region src/adapters/node/digest.d.ts
2
- declare function sha256Base64Url(value: string): string;
3
- //#endregion
4
- export { sha256Base64Url };
5
- //# sourceMappingURL=digest.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"digest.d.cts","names":[],"sources":["../../../src/adapters/node/digest.ts"],"mappings":";iBAEgB,gBAAgB"}
@@ -1,5 +0,0 @@
1
- //#region src/adapters/node/digest.d.ts
2
- declare function sha256Base64Url(value: string): string;
3
- //#endregion
4
- export { sha256Base64Url };
5
- //# sourceMappingURL=digest.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"digest.d.mts","names":[],"sources":["../../../src/adapters/node/digest.ts"],"mappings":";iBAEgB,gBAAgB"}
@@ -1,2 +0,0 @@
1
- import{createHash as e}from"node:crypto";function t(t){return e(`sha256`).update(t).digest(`base64url`)}export{t as sha256Base64Url};
2
- //# sourceMappingURL=digest.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"digest.mjs","names":[],"sources":["../../../src/adapters/node/digest.ts"],"sourcesContent":["import { createHash } from 'node:crypto';\n\nexport function sha256Base64Url(value: string): string {\n return createHash('sha256').update(value).digest('base64url');\n}\n"],"mappings":"yCAEA,SAAgB,EAAgB,EAAuB,CACrD,OAAO,EAAW,QAAQ,CAAC,CAAC,OAAO,CAAK,CAAC,CAAC,OAAO,WAAW,CAC9D"}
package/dist/env.d.cts DELETED
@@ -1,2 +0,0 @@
1
- import { DOOMPI_PROMPT_CACHE_CHILD_PROJECTION_ENV, DOOMPI_PROMPT_CACHE_PARENT_NAMESPACE_ENV, DOOMPI_PROMPT_CACHE_ROOT_SESSION_ENV, PI_CACHE_RETENTION_ENV, PI_CACHE_RETENTION_LONG } from "./types/environment.cjs";
2
- export { DOOMPI_PROMPT_CACHE_CHILD_PROJECTION_ENV, DOOMPI_PROMPT_CACHE_PARENT_NAMESPACE_ENV, DOOMPI_PROMPT_CACHE_ROOT_SESSION_ENV, PI_CACHE_RETENTION_ENV, PI_CACHE_RETENTION_LONG };
@@ -1,43 +0,0 @@
1
- import { ExtensionAPI } from "@earendil-works/pi-coding-agent";
2
- //#region src/types/cache.d.ts
3
- type PromptCacheCapabilityClass = 'key-and-long-retention' | 'key-only' | 'marker-only' | 'automatic' | 'unknown';
4
- interface PromptCacheUsage {
5
- readonly cacheRead: number;
6
- readonly cacheWrite: number;
7
- readonly totalInput: number;
8
- }
9
- interface PromptCacheObservation extends PromptCacheUsage {
10
- readonly namespace: string;
11
- readonly modelFingerprint: string;
12
- readonly observedAt: number;
13
- }
14
- interface PromptCacheRequestStatus {
15
- readonly capability: PromptCacheCapabilityClass;
16
- readonly namespace?: string;
17
- readonly modelFingerprint?: string;
18
- readonly requestedRetention?: string;
19
- readonly keySuffix?: string;
20
- }
21
- interface PromptCacheTelemetrySnapshot extends PromptCacheRequestStatus {
22
- readonly residency: 'unknown';
23
- readonly observations: readonly PromptCacheObservation[];
24
- readonly lastObservation?: PromptCacheObservation;
25
- }
26
- interface PromptCacheTelemetryPort {
27
- beginRequest(status: PromptCacheRequestStatus): void;
28
- observe(usage: PromptCacheUsage, observedAt: number): void;
29
- snapshot(): PromptCacheTelemetrySnapshot;
30
- reset(): void;
31
- }
32
- //#endregion
33
- //#region src/types/extension.d.ts
34
- interface CacheExtensionDependencies {
35
- readonly telemetry: PromptCacheTelemetryPort;
36
- readonly now: () => number;
37
- }
38
- //#endregion
39
- //#region src/adapters/pi/extension.d.ts
40
- declare function activateCacheExtension(pi: ExtensionAPI, dependencies?: CacheExtensionDependencies): Promise<void>;
41
- //#endregion
42
- export { activateCacheExtension, activateCacheExtension as default };
43
- //# sourceMappingURL=pi.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pi.d.cts","names":[],"sources":["../../src/types/cache.ts","../../src/types/extension.ts","../../src/adapters/pi/extension.ts"],"mappings":";;KAAY;UA+CK;WACN;WACA;WACA;;UAGM,+BAA+B;WACrC;WACA;WACA;;UAGM;WACN,YAAY;WACZ;WACA;WACA;WACA;;UAGM,qCAAqC;WAC3C;WACA,uBAAuB;WACvB,kBAAkB;;UAGZ;EACf,aAAa,QAAQ;EACrB,QAAQ,OAAO,kBAAkB;EACjC,YAAY;EACZ;;;;UC3Ee;WACN,WAAW;WACX;;;;iBC2MW,uBACpB,IAAI,cACJ,eAAc,6BACb"}
package/dist/index.d.cts DELETED
@@ -1,8 +0,0 @@
1
- import { sha256Base64Url } from "./adapters/node/digest.cjs";
2
- import { PromptCacheCapabilityClass, PromptCacheChildProjection, PromptCacheDigest, PromptCacheMinorModeState, PromptCacheModelIdentity, PromptCacheObservation, PromptCacheParentState, PromptCacheRequestStatus, PromptCacheTelemetryPort, PromptCacheTelemetrySnapshot, PromptCacheUsage } from "./types/cache.cjs";
3
- import { DOOM_PROMPT_CACHE_TELEMETRY_SERVICE, PromptCacheTelemetryService, readPromptCacheTelemetry } from "./providers/promptCacheTelemetry.cjs";
4
- import { CanonicalObject, CanonicalValue, canonicalJson, canonicalValue } from "./services/canonical.cjs";
5
- import { createChildPromptCacheProjection, createParentPromptCacheNamespace, createPromptCacheKey, createPromptCacheModelFingerprint, createRootSessionIdentity } from "./services/namespace.cjs";
6
- import { classifyPromptCacheCapability, requestedPromptCacheRetention, rewritePromptCacheKey } from "./services/providerPolicy.cjs";
7
- import { PromptCacheTelemetry } from "./services/telemetry.cjs";
8
- export { type CanonicalObject, type CanonicalValue, DOOM_PROMPT_CACHE_TELEMETRY_SERVICE, type PromptCacheCapabilityClass, type PromptCacheChildProjection, type PromptCacheDigest, type PromptCacheMinorModeState, type PromptCacheModelIdentity, type PromptCacheObservation, type PromptCacheParentState, type PromptCacheRequestStatus, PromptCacheTelemetry, type PromptCacheTelemetryPort, PromptCacheTelemetryService, type PromptCacheTelemetrySnapshot, type PromptCacheUsage, canonicalJson, canonicalValue, classifyPromptCacheCapability, createChildPromptCacheProjection, createParentPromptCacheNamespace, createPromptCacheKey, createPromptCacheModelFingerprint, createRootSessionIdentity, readPromptCacheTelemetry, requestedPromptCacheRetention, rewritePromptCacheKey, sha256Base64Url };