@diyor28/context 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (280) hide show
  1. package/README.md +270 -0
  2. package/dist/__tests__/attachment-selector.test.d.ts +11 -0
  3. package/dist/__tests__/attachment-selector.test.d.ts.map +1 -0
  4. package/dist/__tests__/attachment-selector.test.js +449 -0
  5. package/dist/__tests__/attachment-selector.test.js.map +1 -0
  6. package/dist/__tests__/cache-breakpoints.test.d.ts +11 -0
  7. package/dist/__tests__/cache-breakpoints.test.d.ts.map +1 -0
  8. package/dist/__tests__/cache-breakpoints.test.js +398 -0
  9. package/dist/__tests__/cache-breakpoints.test.js.map +1 -0
  10. package/dist/__tests__/codecs.test.d.ts +7 -0
  11. package/dist/__tests__/codecs.test.d.ts.map +1 -0
  12. package/dist/__tests__/codecs.test.js +331 -0
  13. package/dist/__tests__/codecs.test.js.map +1 -0
  14. package/dist/__tests__/compactor.test.d.ts +11 -0
  15. package/dist/__tests__/compactor.test.d.ts.map +1 -0
  16. package/dist/__tests__/compactor.test.js +519 -0
  17. package/dist/__tests__/compactor.test.js.map +1 -0
  18. package/dist/__tests__/context-graph.test.d.ts +7 -0
  19. package/dist/__tests__/context-graph.test.d.ts.map +1 -0
  20. package/dist/__tests__/context-graph.test.js +262 -0
  21. package/dist/__tests__/context-graph.test.js.map +1 -0
  22. package/dist/__tests__/hash.test.d.ts +7 -0
  23. package/dist/__tests__/hash.test.d.ts.map +1 -0
  24. package/dist/__tests__/hash.test.js +228 -0
  25. package/dist/__tests__/hash.test.js.map +1 -0
  26. package/dist/__tests__/integration.test.d.ts +15 -0
  27. package/dist/__tests__/integration.test.d.ts.map +1 -0
  28. package/dist/__tests__/integration.test.js +728 -0
  29. package/dist/__tests__/integration.test.js.map +1 -0
  30. package/dist/__tests__/kind-order.test.d.ts +7 -0
  31. package/dist/__tests__/kind-order.test.d.ts.map +1 -0
  32. package/dist/__tests__/kind-order.test.js +243 -0
  33. package/dist/__tests__/kind-order.test.js.map +1 -0
  34. package/dist/__tests__/phase2-integration.test.d.ts +5 -0
  35. package/dist/__tests__/phase2-integration.test.d.ts.map +1 -0
  36. package/dist/__tests__/phase2-integration.test.js +222 -0
  37. package/dist/__tests__/phase2-integration.test.js.map +1 -0
  38. package/dist/__tests__/queries.test.d.ts +7 -0
  39. package/dist/__tests__/queries.test.d.ts.map +1 -0
  40. package/dist/__tests__/queries.test.js +254 -0
  41. package/dist/__tests__/queries.test.js.map +1 -0
  42. package/dist/__tests__/token-estimator.test.d.ts +7 -0
  43. package/dist/__tests__/token-estimator.test.d.ts.map +1 -0
  44. package/dist/__tests__/token-estimator.test.js +267 -0
  45. package/dist/__tests__/token-estimator.test.js.map +1 -0
  46. package/dist/adapters/anthropic-estimator.d.ts +38 -0
  47. package/dist/adapters/anthropic-estimator.d.ts.map +1 -0
  48. package/dist/adapters/anthropic-estimator.js +108 -0
  49. package/dist/adapters/anthropic-estimator.js.map +1 -0
  50. package/dist/adapters/attachment-resolver.d.ts +96 -0
  51. package/dist/adapters/attachment-resolver.d.ts.map +1 -0
  52. package/dist/adapters/attachment-resolver.js +176 -0
  53. package/dist/adapters/attachment-resolver.js.map +1 -0
  54. package/dist/adapters/attachment-selector.d.ts +59 -0
  55. package/dist/adapters/attachment-selector.d.ts.map +1 -0
  56. package/dist/adapters/attachment-selector.js +163 -0
  57. package/dist/adapters/attachment-selector.js.map +1 -0
  58. package/dist/adapters/gemini-estimator.d.ts +27 -0
  59. package/dist/adapters/gemini-estimator.d.ts.map +1 -0
  60. package/dist/adapters/gemini-estimator.js +80 -0
  61. package/dist/adapters/gemini-estimator.js.map +1 -0
  62. package/dist/adapters/index.d.ts +12 -0
  63. package/dist/adapters/index.d.ts.map +1 -0
  64. package/dist/adapters/index.js +28 -0
  65. package/dist/adapters/index.js.map +1 -0
  66. package/dist/adapters/memory-store.d.ts +139 -0
  67. package/dist/adapters/memory-store.d.ts.map +1 -0
  68. package/dist/adapters/memory-store.js +187 -0
  69. package/dist/adapters/memory-store.js.map +1 -0
  70. package/dist/adapters/openai-estimator.d.ts +35 -0
  71. package/dist/adapters/openai-estimator.d.ts.map +1 -0
  72. package/dist/adapters/openai-estimator.js +89 -0
  73. package/dist/adapters/openai-estimator.js.map +1 -0
  74. package/dist/adapters/summarizer.d.ts +121 -0
  75. package/dist/adapters/summarizer.d.ts.map +1 -0
  76. package/dist/adapters/summarizer.js +121 -0
  77. package/dist/adapters/summarizer.js.map +1 -0
  78. package/dist/adapters/token-estimator.d.ts +63 -0
  79. package/dist/adapters/token-estimator.d.ts.map +1 -0
  80. package/dist/adapters/token-estimator.js +37 -0
  81. package/dist/adapters/token-estimator.js.map +1 -0
  82. package/dist/builder/context-builder.d.ts +186 -0
  83. package/dist/builder/context-builder.d.ts.map +1 -0
  84. package/dist/builder/context-builder.js +305 -0
  85. package/dist/builder/context-builder.js.map +1 -0
  86. package/dist/builder/context-fork.d.ts +166 -0
  87. package/dist/builder/context-fork.d.ts.map +1 -0
  88. package/dist/builder/context-fork.js +282 -0
  89. package/dist/builder/context-fork.js.map +1 -0
  90. package/dist/builder/index.d.ts +6 -0
  91. package/dist/builder/index.d.ts.map +1 -0
  92. package/dist/builder/index.js +22 -0
  93. package/dist/builder/index.js.map +1 -0
  94. package/dist/codecs/base.d.ts +18 -0
  95. package/dist/codecs/base.d.ts.map +1 -0
  96. package/dist/codecs/base.js +39 -0
  97. package/dist/codecs/base.js.map +1 -0
  98. package/dist/codecs/conversation-history.codec.d.ts +81 -0
  99. package/dist/codecs/conversation-history.codec.d.ts.map +1 -0
  100. package/dist/codecs/conversation-history.codec.js +89 -0
  101. package/dist/codecs/conversation-history.codec.js.map +1 -0
  102. package/dist/codecs/index.d.ts +31 -0
  103. package/dist/codecs/index.d.ts.map +1 -0
  104. package/dist/codecs/index.js +71 -0
  105. package/dist/codecs/index.js.map +1 -0
  106. package/dist/codecs/redacted-stub.codec.d.ts +32 -0
  107. package/dist/codecs/redacted-stub.codec.d.ts.map +1 -0
  108. package/dist/codecs/redacted-stub.codec.js +64 -0
  109. package/dist/codecs/redacted-stub.codec.js.map +1 -0
  110. package/dist/codecs/structured-reference.codec.d.ts +40 -0
  111. package/dist/codecs/structured-reference.codec.d.ts.map +1 -0
  112. package/dist/codecs/structured-reference.codec.js +81 -0
  113. package/dist/codecs/structured-reference.codec.js.map +1 -0
  114. package/dist/codecs/system-rules.codec.d.ts +32 -0
  115. package/dist/codecs/system-rules.codec.d.ts.map +1 -0
  116. package/dist/codecs/system-rules.codec.js +62 -0
  117. package/dist/codecs/system-rules.codec.js.map +1 -0
  118. package/dist/codecs/tool-output.codec.d.ts +66 -0
  119. package/dist/codecs/tool-output.codec.d.ts.map +1 -0
  120. package/dist/codecs/tool-output.codec.js +95 -0
  121. package/dist/codecs/tool-output.codec.js.map +1 -0
  122. package/dist/codecs/tool-schema.codec.d.ts +36 -0
  123. package/dist/codecs/tool-schema.codec.d.ts.map +1 -0
  124. package/dist/codecs/tool-schema.codec.js +74 -0
  125. package/dist/codecs/tool-schema.codec.js.map +1 -0
  126. package/dist/codecs/unsafe-text.codec.d.ts +28 -0
  127. package/dist/codecs/unsafe-text.codec.d.ts.map +1 -0
  128. package/dist/codecs/unsafe-text.codec.js +63 -0
  129. package/dist/codecs/unsafe-text.codec.js.map +1 -0
  130. package/dist/graph/context-graph.d.ts +121 -0
  131. package/dist/graph/context-graph.d.ts.map +1 -0
  132. package/dist/graph/context-graph.js +166 -0
  133. package/dist/graph/context-graph.js.map +1 -0
  134. package/dist/graph/index.d.ts +8 -0
  135. package/dist/graph/index.d.ts.map +1 -0
  136. package/dist/graph/index.js +24 -0
  137. package/dist/graph/index.js.map +1 -0
  138. package/dist/graph/kind-order.d.ts +60 -0
  139. package/dist/graph/kind-order.d.ts.map +1 -0
  140. package/dist/graph/kind-order.js +113 -0
  141. package/dist/graph/kind-order.js.map +1 -0
  142. package/dist/graph/queries.d.ts +68 -0
  143. package/dist/graph/queries.d.ts.map +1 -0
  144. package/dist/graph/queries.js +240 -0
  145. package/dist/graph/queries.js.map +1 -0
  146. package/dist/graph/views.d.ts +90 -0
  147. package/dist/graph/views.d.ts.map +1 -0
  148. package/dist/graph/views.js +173 -0
  149. package/dist/graph/views.js.map +1 -0
  150. package/dist/index.d.ts +16 -0
  151. package/dist/index.d.ts.map +1 -0
  152. package/dist/index.js +40 -0
  153. package/dist/index.js.map +1 -0
  154. package/dist/pipeline/compactor.d.ts +128 -0
  155. package/dist/pipeline/compactor.d.ts.map +1 -0
  156. package/dist/pipeline/compactor.js +346 -0
  157. package/dist/pipeline/compactor.js.map +1 -0
  158. package/dist/pipeline/index.d.ts +6 -0
  159. package/dist/pipeline/index.d.ts.map +1 -0
  160. package/dist/pipeline/index.js +22 -0
  161. package/dist/pipeline/index.js.map +1 -0
  162. package/dist/pipeline/summarizer.d.ts +18 -0
  163. package/dist/pipeline/summarizer.d.ts.map +1 -0
  164. package/dist/pipeline/summarizer.js +68 -0
  165. package/dist/pipeline/summarizer.js.map +1 -0
  166. package/dist/policies/default-policy.d.ts +29 -0
  167. package/dist/policies/default-policy.d.ts.map +1 -0
  168. package/dist/policies/default-policy.js +58 -0
  169. package/dist/policies/default-policy.js.map +1 -0
  170. package/dist/policies/index.d.ts +5 -0
  171. package/dist/policies/index.d.ts.map +1 -0
  172. package/dist/policies/index.js +21 -0
  173. package/dist/policies/index.js.map +1 -0
  174. package/dist/providers/anthropic-compiler.d.ts +58 -0
  175. package/dist/providers/anthropic-compiler.d.ts.map +1 -0
  176. package/dist/providers/anthropic-compiler.js +182 -0
  177. package/dist/providers/anthropic-compiler.js.map +1 -0
  178. package/dist/providers/capabilities.d.ts +54 -0
  179. package/dist/providers/capabilities.d.ts.map +1 -0
  180. package/dist/providers/capabilities.js +87 -0
  181. package/dist/providers/capabilities.js.map +1 -0
  182. package/dist/providers/gemini-compiler.d.ts +51 -0
  183. package/dist/providers/gemini-compiler.d.ts.map +1 -0
  184. package/dist/providers/gemini-compiler.js +206 -0
  185. package/dist/providers/gemini-compiler.js.map +1 -0
  186. package/dist/providers/index.d.ts +8 -0
  187. package/dist/providers/index.d.ts.map +1 -0
  188. package/dist/providers/index.js +24 -0
  189. package/dist/providers/index.js.map +1 -0
  190. package/dist/providers/openai-compiler.d.ts +46 -0
  191. package/dist/providers/openai-compiler.d.ts.map +1 -0
  192. package/dist/providers/openai-compiler.js +149 -0
  193. package/dist/providers/openai-compiler.js.map +1 -0
  194. package/dist/types/attachment.d.ts +62 -0
  195. package/dist/types/attachment.d.ts.map +1 -0
  196. package/dist/types/attachment.js +6 -0
  197. package/dist/types/attachment.js.map +1 -0
  198. package/dist/types/block.d.ts +61 -0
  199. package/dist/types/block.d.ts.map +1 -0
  200. package/dist/types/block.js +8 -0
  201. package/dist/types/block.js.map +1 -0
  202. package/dist/types/codec.d.ts +58 -0
  203. package/dist/types/codec.d.ts.map +1 -0
  204. package/dist/types/codec.js +6 -0
  205. package/dist/types/codec.js.map +1 -0
  206. package/dist/types/compiled.d.ts +91 -0
  207. package/dist/types/compiled.d.ts.map +1 -0
  208. package/dist/types/compiled.js +6 -0
  209. package/dist/types/compiled.js.map +1 -0
  210. package/dist/types/hash.d.ts +24 -0
  211. package/dist/types/hash.d.ts.map +1 -0
  212. package/dist/types/hash.js +49 -0
  213. package/dist/types/hash.js.map +1 -0
  214. package/dist/types/index.d.ts +10 -0
  215. package/dist/types/index.d.ts.map +1 -0
  216. package/dist/types/index.js +26 -0
  217. package/dist/types/index.js.map +1 -0
  218. package/dist/types/policy.d.ts +128 -0
  219. package/dist/types/policy.d.ts.map +1 -0
  220. package/dist/types/policy.js +55 -0
  221. package/dist/types/policy.js.map +1 -0
  222. package/package.json +55 -0
  223. package/postcss.config.js +4 -0
  224. package/src/__tests__/attachment-selector.test.ts +559 -0
  225. package/src/__tests__/cache-breakpoints.test.ts +566 -0
  226. package/src/__tests__/codecs.test.ts +417 -0
  227. package/src/__tests__/compactor.test.ts +608 -0
  228. package/src/__tests__/context-graph.test.ts +383 -0
  229. package/src/__tests__/hash.test.ts +274 -0
  230. package/src/__tests__/integration.test.ts +866 -0
  231. package/src/__tests__/kind-order.test.ts +312 -0
  232. package/src/__tests__/phase2-integration.test.ts +253 -0
  233. package/src/__tests__/queries.test.ts +387 -0
  234. package/src/__tests__/token-estimator.test.ts +326 -0
  235. package/src/adapters/anthropic-estimator.ts +125 -0
  236. package/src/adapters/attachment-resolver.ts +295 -0
  237. package/src/adapters/attachment-selector.ts +218 -0
  238. package/src/adapters/gemini-estimator.ts +93 -0
  239. package/src/adapters/index.ts +12 -0
  240. package/src/adapters/memory-store.ts +299 -0
  241. package/src/adapters/openai-estimator.ts +105 -0
  242. package/src/adapters/summarizer.ts +250 -0
  243. package/src/adapters/token-estimator.ts +74 -0
  244. package/src/builder/context-builder.ts +467 -0
  245. package/src/builder/context-fork.ts +471 -0
  246. package/src/builder/index.ts +6 -0
  247. package/src/codecs/base.ts +36 -0
  248. package/src/codecs/conversation-history.codec.ts +108 -0
  249. package/src/codecs/index.ts +57 -0
  250. package/src/codecs/redacted-stub.codec.ts +76 -0
  251. package/src/codecs/structured-reference.codec.ts +96 -0
  252. package/src/codecs/system-rules.codec.ts +74 -0
  253. package/src/codecs/tool-output.codec.ts +109 -0
  254. package/src/codecs/tool-schema.codec.ts +87 -0
  255. package/src/codecs/unsafe-text.codec.ts +74 -0
  256. package/src/graph/context-graph.ts +205 -0
  257. package/src/graph/index.ts +8 -0
  258. package/src/graph/kind-order.ts +125 -0
  259. package/src/graph/queries.ts +306 -0
  260. package/src/graph/views.ts +255 -0
  261. package/src/index.ts +31 -0
  262. package/src/pipeline/compactor.ts +563 -0
  263. package/src/pipeline/index.ts +6 -0
  264. package/src/pipeline/summarizer.ts +76 -0
  265. package/src/policies/default-policy.ts +69 -0
  266. package/src/policies/index.ts +5 -0
  267. package/src/providers/anthropic-compiler.ts +294 -0
  268. package/src/providers/capabilities.ts +144 -0
  269. package/src/providers/gemini-compiler.ts +272 -0
  270. package/src/providers/index.ts +8 -0
  271. package/src/providers/openai-compiler.ts +191 -0
  272. package/src/types/attachment.ts +86 -0
  273. package/src/types/block.ts +84 -0
  274. package/src/types/codec.ts +68 -0
  275. package/src/types/compiled.ts +109 -0
  276. package/src/types/hash.ts +58 -0
  277. package/src/types/index.ts +10 -0
  278. package/src/types/policy.ts +194 -0
  279. package/tsconfig.json +21 -0
  280. package/vitest.config.ts +21 -0
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ /**
3
+ * Block hashing utilities.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.extractStableMetaSubset = extractStableMetaSubset;
7
+ exports.computeBlockHash = computeBlockHash;
8
+ const crypto_1 = require("crypto");
9
+ /**
10
+ * Extract stable metadata subset for hashing.
11
+ * Excludes volatile fields like createdAt, source, tags.
12
+ *
13
+ * @param meta - Full block metadata
14
+ * @returns Stable metadata subset
15
+ */
16
+ function extractStableMetaSubset(meta) {
17
+ return {
18
+ kind: meta.kind,
19
+ sensitivity: meta.sensitivity,
20
+ codecId: meta.codecId,
21
+ codecVersion: meta.codecVersion,
22
+ };
23
+ }
24
+ /**
25
+ * Compute content-addressed block hash.
26
+ * Uses StableMetaSubset + codec.canonicalize(payload) for deterministic hashing.
27
+ *
28
+ * @param meta - Block metadata (or StableMetaSubset)
29
+ * @param payload - Block payload (or canonicalized payload if codec not provided)
30
+ * @param codec - Block codec for canonicalization (optional)
31
+ * @returns Hex-encoded SHA-256 hash
32
+ */
33
+ function computeBlockHash(meta, payload, codec) {
34
+ // Extract stable metadata subset (if full meta provided)
35
+ const stableMeta = 'createdAt' in meta ? extractStableMetaSubset(meta) : meta;
36
+ // Canonicalize payload (if codec provided)
37
+ const canonicalized = codec ? codec.canonicalize(payload) : payload;
38
+ // Combine stable meta + canonicalized payload
39
+ const combined = {
40
+ meta: stableMeta,
41
+ payload: canonicalized,
42
+ };
43
+ // Compute SHA-256 hash
44
+ const hash = (0, crypto_1.createHash)('sha256')
45
+ .update(JSON.stringify(combined))
46
+ .digest('hex');
47
+ return hash;
48
+ }
49
+ //# sourceMappingURL=hash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.js","sourceRoot":"","sources":["../../src/types/hash.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAaH,0DAOC;AAWD,4CAuBC;AApDD,mCAAoC;AAIpC;;;;;;GAMG;AACH,SAAgB,uBAAuB,CAAC,IAAe;IACrD,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,YAAY,EAAE,IAAI,CAAC,YAAY;KAChC,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,gBAAgB,CAC9B,IAAkC,EAClC,OAAiB,EACjB,KAA4B;IAE5B,yDAAyD;IACzD,MAAM,UAAU,GAAG,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE9E,2CAA2C;IAC3C,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAEpE,8CAA8C;IAC9C,MAAM,QAAQ,GAAG;QACf,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,aAAa;KACvB,CAAC;IAEF,uBAAuB;IACvB,MAAM,IAAI,GAAG,IAAA,mBAAU,EAAC,QAAQ,CAAC;SAC9B,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;SAChC,MAAM,CAAC,KAAK,CAAC,CAAC;IAEjB,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Core types for @foundry/context
3
+ */
4
+ export * from './block.js';
5
+ export * from './codec.js';
6
+ export * from './hash.js';
7
+ export * from './policy.js';
8
+ export * from './attachment.js';
9
+ export * from './compiled.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ /**
3
+ * Core types for @foundry/context
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ __exportStar(require("./block.js"), exports);
21
+ __exportStar(require("./codec.js"), exports);
22
+ __exportStar(require("./hash.js"), exports);
23
+ __exportStar(require("./policy.js"), exports);
24
+ __exportStar(require("./attachment.js"), exports);
25
+ __exportStar(require("./compiled.js"), exports);
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;AAEH,6CAA2B;AAC3B,6CAA2B;AAC3B,4CAA0B;AAC1B,8CAA4B;AAC5B,kDAAgC;AAChC,gDAA8B"}
@@ -0,0 +1,128 @@
1
+ /**
2
+ * Context policy configuration for token budgeting and overflow handling.
3
+ */
4
+ import type { BlockKind, SensitivityLevel } from './block.js';
5
+ /**
6
+ * LLM provider type.
7
+ */
8
+ export type Provider = 'anthropic' | 'openai' | 'gemini';
9
+ /**
10
+ * Model reference for LLM configuration.
11
+ */
12
+ export interface ModelRef {
13
+ /** LLM provider */
14
+ provider: Provider;
15
+ /** Model identifier (provider-specific) */
16
+ model: string;
17
+ }
18
+ /**
19
+ * Token budget overflow strategy.
20
+ */
21
+ export type OverflowStrategy = 'error' | 'truncate' | 'compact';
22
+ /**
23
+ * Block kind priority configuration.
24
+ */
25
+ export interface KindPriority {
26
+ /** Block kind */
27
+ kind: BlockKind;
28
+ /** Minimum token reservation (guaranteed) */
29
+ minTokens: number;
30
+ /** Maximum token allocation (soft limit) */
31
+ maxTokens: number;
32
+ /** Can be truncated on overflow */
33
+ truncatable: boolean;
34
+ }
35
+ /**
36
+ * Compaction configuration.
37
+ */
38
+ export interface CompactionConfig {
39
+ /** Enable tool output pruning */
40
+ pruneToolOutputs: boolean;
41
+ /** Maximum tool output age (seconds) to keep */
42
+ maxToolOutputAge?: number;
43
+ /** Maximum tool outputs per kind */
44
+ maxToolOutputsPerKind?: number;
45
+ /** Enable conversation history summarization */
46
+ summarizeHistory: boolean;
47
+ /** Maximum history messages to keep before summarization */
48
+ maxHistoryMessages?: number;
49
+ }
50
+ /**
51
+ * Content sensitivity filtering configuration.
52
+ */
53
+ export interface SensitivityConfig {
54
+ /** Maximum allowed sensitivity level */
55
+ maxSensitivity: SensitivityLevel;
56
+ /** Redact restricted content (vs. remove) */
57
+ redactRestricted: boolean;
58
+ }
59
+ /**
60
+ * Context policy configuration.
61
+ */
62
+ export interface ContextPolicy {
63
+ /** Target LLM provider */
64
+ provider: Provider;
65
+ /** Model identifier (provider-specific) */
66
+ modelId: string;
67
+ /** Total context window size (tokens) */
68
+ contextWindow: number;
69
+ /** Reserved tokens for completion (subtracted from budget) */
70
+ completionReserve: number;
71
+ /** Overflow handling strategy */
72
+ overflowStrategy: OverflowStrategy;
73
+ /** Block kind priorities */
74
+ kindPriorities: KindPriority[];
75
+ /** Compaction configuration (if overflowStrategy = 'compact') */
76
+ compaction?: CompactionConfig;
77
+ /** Sensitivity filtering configuration */
78
+ sensitivity: SensitivityConfig;
79
+ /** Attachment selection policy */
80
+ attachments?: AttachmentPolicy;
81
+ }
82
+ /**
83
+ * Default kind priorities (general-purpose).
84
+ */
85
+ export declare const DEFAULT_KIND_PRIORITIES: KindPriority[];
86
+ /**
87
+ * Default compaction configuration.
88
+ */
89
+ export declare const DEFAULT_COMPACTION_CONFIG: CompactionConfig;
90
+ /**
91
+ * Default sensitivity configuration (public only).
92
+ */
93
+ export declare const DEFAULT_SENSITIVITY_CONFIG: SensitivityConfig;
94
+ /**
95
+ * Attachment purpose for prioritization.
96
+ */
97
+ export type AttachmentPurpose = 'evidence' | 'input' | 'context' | 'artifact';
98
+ /**
99
+ * Selection strategy ranking criteria.
100
+ */
101
+ export type RankingCriterion = 'purpose' | 'user_mention' | 'recency';
102
+ /**
103
+ * Attachment selection strategy.
104
+ */
105
+ export interface SelectionStrategy {
106
+ /** Ranking criteria in priority order */
107
+ rankBy: RankingCriterion[];
108
+ /** Purpose priority mapping (lower = higher priority) */
109
+ purposePriority?: Record<AttachmentPurpose, number>;
110
+ }
111
+ /**
112
+ * Attachment policy configuration.
113
+ */
114
+ export interface AttachmentPolicy {
115
+ /** Maximum total tokens for all attachments */
116
+ maxTokensTotal: number;
117
+ /** Selection strategy */
118
+ selectionStrategy: SelectionStrategy;
119
+ }
120
+ /**
121
+ * Default selection strategy (purpose > user_mention > recency).
122
+ */
123
+ export declare const DEFAULT_SELECTION_STRATEGY: SelectionStrategy;
124
+ /**
125
+ * Default attachment policy.
126
+ */
127
+ export declare const DEFAULT_ATTACHMENT_POLICY: AttachmentPolicy;
128
+ //# sourceMappingURL=policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/types/policy.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,mBAAmB;IACnB,QAAQ,EAAE,QAAQ,CAAC;IAEnB,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GACxB,OAAO,GACP,UAAU,GACV,SAAS,CAAC;AAEd;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,iBAAiB;IACjB,IAAI,EAAE,SAAS,CAAC;IAEhB,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC;IAElB,4CAA4C;IAC5C,SAAS,EAAE,MAAM,CAAC;IAElB,mCAAmC;IACnC,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,iCAAiC;IACjC,gBAAgB,EAAE,OAAO,CAAC;IAE1B,gDAAgD;IAChD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,oCAAoC;IACpC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B,gDAAgD;IAChD,gBAAgB,EAAE,OAAO,CAAC;IAE1B,4DAA4D;IAC5D,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,wCAAwC;IACxC,cAAc,EAAE,gBAAgB,CAAC;IAEjC,6CAA6C;IAC7C,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,0BAA0B;IAC1B,QAAQ,EAAE,QAAQ,CAAC;IAEnB,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAEhB,yCAAyC;IACzC,aAAa,EAAE,MAAM,CAAC;IAEtB,8DAA8D;IAC9D,iBAAiB,EAAE,MAAM,CAAC;IAE1B,iCAAiC;IACjC,gBAAgB,EAAE,gBAAgB,CAAC;IAEnC,4BAA4B;IAC5B,cAAc,EAAE,YAAY,EAAE,CAAC;IAE/B,iEAAiE;IACjE,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAE9B,0CAA0C;IAC1C,WAAW,EAAE,iBAAiB,CAAC;IAE/B,kCAAkC;IAClC,WAAW,CAAC,EAAE,gBAAgB,CAAC;CAChC;AAED;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,YAAY,EAQjD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,EAAE,gBAMvC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,0BAA0B,EAAE,iBAGxC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;AAE9E;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,cAAc,GAAG,SAAS,CAAC;AAEtE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,yCAAyC;IACzC,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAE3B,yDAAyD;IACzD,eAAe,CAAC,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;CACrD;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+CAA+C;IAC/C,cAAc,EAAE,MAAM,CAAC;IAEvB,yBAAyB;IACzB,iBAAiB,EAAE,iBAAiB,CAAC;CACtC;AAED;;GAEG;AACH,eAAO,MAAM,0BAA0B,EAAE,iBAQxC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,EAAE,gBAGvC,CAAC"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ /**
3
+ * Context policy configuration for token budgeting and overflow handling.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DEFAULT_ATTACHMENT_POLICY = exports.DEFAULT_SELECTION_STRATEGY = exports.DEFAULT_SENSITIVITY_CONFIG = exports.DEFAULT_COMPACTION_CONFIG = exports.DEFAULT_KIND_PRIORITIES = void 0;
7
+ /**
8
+ * Default kind priorities (general-purpose).
9
+ */
10
+ exports.DEFAULT_KIND_PRIORITIES = [
11
+ { kind: 'pinned', minTokens: 500, maxTokens: 2000, truncatable: false },
12
+ { kind: 'reference', minTokens: 1000, maxTokens: 10000, truncatable: true },
13
+ { kind: 'memory', minTokens: 500, maxTokens: 5000, truncatable: true },
14
+ { kind: 'state', minTokens: 200, maxTokens: 2000, truncatable: false },
15
+ { kind: 'tool_output', minTokens: 1000, maxTokens: 20000, truncatable: true },
16
+ { kind: 'history', minTokens: 2000, maxTokens: 50000, truncatable: true },
17
+ { kind: 'turn', minTokens: 500, maxTokens: 10000, truncatable: false },
18
+ ];
19
+ /**
20
+ * Default compaction configuration.
21
+ */
22
+ exports.DEFAULT_COMPACTION_CONFIG = {
23
+ pruneToolOutputs: true,
24
+ maxToolOutputAge: 3600, // 1 hour
25
+ maxToolOutputsPerKind: 10,
26
+ summarizeHistory: true,
27
+ maxHistoryMessages: 20,
28
+ };
29
+ /**
30
+ * Default sensitivity configuration (public only).
31
+ */
32
+ exports.DEFAULT_SENSITIVITY_CONFIG = {
33
+ maxSensitivity: 'public',
34
+ redactRestricted: true,
35
+ };
36
+ /**
37
+ * Default selection strategy (purpose > user_mention > recency).
38
+ */
39
+ exports.DEFAULT_SELECTION_STRATEGY = {
40
+ rankBy: ['purpose', 'user_mention', 'recency'],
41
+ purposePriority: {
42
+ evidence: 1,
43
+ input: 2,
44
+ context: 3,
45
+ artifact: 4,
46
+ },
47
+ };
48
+ /**
49
+ * Default attachment policy.
50
+ */
51
+ exports.DEFAULT_ATTACHMENT_POLICY = {
52
+ maxTokensTotal: 10000,
53
+ selectionStrategy: exports.DEFAULT_SELECTION_STRATEGY,
54
+ };
55
+ //# sourceMappingURL=policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/types/policy.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AA4GH;;GAEG;AACU,QAAA,uBAAuB,GAAmB;IACrD,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE;IACvE,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE;IAC3E,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE;IACtE,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE;IACtE,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE;IAC7E,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE;IACzE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE;CACvE,CAAC;AAEF;;GAEG;AACU,QAAA,yBAAyB,GAAqB;IACzD,gBAAgB,EAAE,IAAI;IACtB,gBAAgB,EAAE,IAAI,EAAE,SAAS;IACjC,qBAAqB,EAAE,EAAE;IACzB,gBAAgB,EAAE,IAAI;IACtB,kBAAkB,EAAE,EAAE;CACvB,CAAC;AAEF;;GAEG;AACU,QAAA,0BAA0B,GAAsB;IAC3D,cAAc,EAAE,QAAQ;IACxB,gBAAgB,EAAE,IAAI;CACvB,CAAC;AAkCF;;GAEG;AACU,QAAA,0BAA0B,GAAsB;IAC3D,MAAM,EAAE,CAAC,SAAS,EAAE,cAAc,EAAE,SAAS,CAAC;IAC9C,eAAe,EAAE;QACf,QAAQ,EAAE,CAAC;QACX,KAAK,EAAE,CAAC;QACR,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,CAAC;KACZ;CACF,CAAC;AAEF;;GAEG;AACU,QAAA,yBAAyB,GAAqB;IACzD,cAAc,EAAE,KAAK;IACrB,iBAAiB,EAAE,kCAA0B;CAC9C,CAAC"}
package/package.json ADDED
@@ -0,0 +1,55 @@
1
+ {
2
+ "name": "@diyor28/context",
3
+ "version": "1.0.0",
4
+ "private": false,
5
+ "description": "Context management library for LLM conversations with token budgeting and automatic compaction",
6
+ "keywords": [
7
+ "llm",
8
+ "context",
9
+ "token-budget",
10
+ "ai",
11
+ "anthropic",
12
+ "openai",
13
+ "gemini"
14
+ ],
15
+ "repository": {
16
+ "type": "git",
17
+ "url": "https://github.com/iota-uz/foundry.git",
18
+ "directory": "packages/context"
19
+ },
20
+ "license": "MIT",
21
+ "main": "dist/index.js",
22
+ "types": "dist/index.d.ts",
23
+ "publishConfig": {
24
+ "access": "public"
25
+ },
26
+ "exports": {
27
+ ".": {
28
+ "types": "./dist/index.d.ts",
29
+ "default": "./dist/index.js"
30
+ }
31
+ },
32
+ "dependencies": {
33
+ "tiktoken": "^1.0.22",
34
+ "zod": "^3.24.1"
35
+ },
36
+ "peerDependencies": {
37
+ "@anthropic-ai/sdk": "^0.38.0",
38
+ "openai": "^4.77.3"
39
+ },
40
+ "devDependencies": {
41
+ "@anthropic-ai/sdk": "^0.38.0",
42
+ "@types/node": "^20.17.13",
43
+ "@vitest/coverage-v8": "^2.1.8",
44
+ "openai": "^4.77.3",
45
+ "typescript": "^5.7.2",
46
+ "vitest": "^2.1.8"
47
+ },
48
+ "scripts": {
49
+ "build": "tsc",
50
+ "typecheck": "tsc --noEmit",
51
+ "test": "vitest run",
52
+ "test:watch": "vitest",
53
+ "test:coverage": "vitest run --coverage"
54
+ }
55
+ }
@@ -0,0 +1,4 @@
1
+ // Disable PostCSS for context package tests
2
+ export default {
3
+ plugins: [],
4
+ };