@superblocksteam/vite-plugin-file-sync 2.0.123 → 2.0.124-next.1

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 (271) hide show
  1. package/dist/ai-service/agent/prompts/build-base-system-prompt.d.ts +16 -1
  2. package/dist/ai-service/agent/prompts/build-base-system-prompt.d.ts.map +1 -1
  3. package/dist/ai-service/agent/prompts/build-base-system-prompt.js +32 -1
  4. package/dist/ai-service/agent/prompts/build-base-system-prompt.js.map +1 -1
  5. package/dist/ai-service/agent/prompts/build-security-scan-prompt.d.ts.map +1 -1
  6. package/dist/ai-service/agent/prompts/build-security-scan-prompt.js +3 -1
  7. package/dist/ai-service/agent/prompts/build-security-scan-prompt.js.map +1 -1
  8. package/dist/ai-service/agent/tools/apis/api-comparator.d.ts.map +1 -1
  9. package/dist/ai-service/agent/tools/apis/api-comparator.js +1 -4
  10. package/dist/ai-service/agent/tools/apis/api-comparator.js.map +1 -1
  11. package/dist/ai-service/agent/tools/apis/api-testing-state.js +7 -0
  12. package/dist/ai-service/agent/tools/apis/api-testing-state.js.map +1 -1
  13. package/dist/ai-service/agent/tools/apis/get-api-docs.d.ts +1 -1
  14. package/dist/ai-service/agent/tools/apis/write-api.d.ts +2 -2
  15. package/dist/ai-service/agent/tools/build-capture-screenshot.d.ts.map +1 -1
  16. package/dist/ai-service/agent/tools/build-capture-screenshot.js +11 -33
  17. package/dist/ai-service/agent/tools/build-capture-screenshot.js.map +1 -1
  18. package/dist/ai-service/agent/tools/build-copy-directory.d.ts +1 -1
  19. package/dist/ai-service/agent/tools/build-finalize.d.ts.map +1 -1
  20. package/dist/ai-service/agent/tools/build-finalize.js +11 -2
  21. package/dist/ai-service/agent/tools/build-finalize.js.map +1 -1
  22. package/dist/ai-service/agent/tools/build-install-packages.d.ts +41 -1
  23. package/dist/ai-service/agent/tools/build-install-packages.d.ts.map +1 -1
  24. package/dist/ai-service/agent/tools/build-install-packages.js +217 -0
  25. package/dist/ai-service/agent/tools/build-install-packages.js.map +1 -1
  26. package/dist/ai-service/agent/tools/build-lookup-npm-package.d.ts +28 -0
  27. package/dist/ai-service/agent/tools/build-lookup-npm-package.d.ts.map +1 -0
  28. package/dist/ai-service/agent/tools/build-lookup-npm-package.js +78 -0
  29. package/dist/ai-service/agent/tools/build-lookup-npm-package.js.map +1 -0
  30. package/dist/ai-service/agent/tools/build-manage-checklist.d.ts +4 -4
  31. package/dist/ai-service/agent/tools/build-navigate-preview.d.ts +16 -0
  32. package/dist/ai-service/agent/tools/build-navigate-preview.d.ts.map +1 -0
  33. package/dist/ai-service/agent/tools/build-navigate-preview.js +68 -0
  34. package/dist/ai-service/agent/tools/build-navigate-preview.js.map +1 -0
  35. package/dist/ai-service/agent/tools/build-write-file.d.ts +1 -1
  36. package/dist/ai-service/agent/tools/databases/dev-database.d.ts +9 -9
  37. package/dist/ai-service/agent/tools/index.d.ts +2 -0
  38. package/dist/ai-service/agent/tools/index.d.ts.map +1 -1
  39. package/dist/ai-service/agent/tools/index.js +2 -0
  40. package/dist/ai-service/agent/tools/index.js.map +1 -1
  41. package/dist/ai-service/agent/tools/integrations/execute-request.d.ts +3 -3
  42. package/dist/ai-service/agent/tools/report-security-findings.d.ts +11 -5
  43. package/dist/ai-service/agent/tools/report-security-findings.d.ts.map +1 -1
  44. package/dist/ai-service/agent/tools/report-security-findings.js +1 -0
  45. package/dist/ai-service/agent/tools/report-security-findings.js.map +1 -1
  46. package/dist/ai-service/agent/tools.d.ts.map +1 -1
  47. package/dist/ai-service/agent/tools.js +3 -1
  48. package/dist/ai-service/agent/tools.js.map +1 -1
  49. package/dist/ai-service/agent/tools2/tools/git.d.ts +2 -2
  50. package/dist/ai-service/agent/tools2/tools/grep.d.ts +2 -2
  51. package/dist/ai-service/agent/tools2/tools/update-test-case-status.d.ts +2 -2
  52. package/dist/ai-service/app-interface/npm-error-parser.d.ts +161 -0
  53. package/dist/ai-service/app-interface/npm-error-parser.d.ts.map +1 -0
  54. package/dist/ai-service/app-interface/npm-error-parser.js +510 -0
  55. package/dist/ai-service/app-interface/npm-error-parser.js.map +1 -0
  56. package/dist/ai-service/app-interface/npm-package-lookup.d.ts +286 -0
  57. package/dist/ai-service/app-interface/npm-package-lookup.d.ts.map +1 -0
  58. package/dist/ai-service/app-interface/npm-package-lookup.js +793 -0
  59. package/dist/ai-service/app-interface/npm-package-lookup.js.map +1 -0
  60. package/dist/ai-service/app-interface/npm-registry.d.ts +735 -47
  61. package/dist/ai-service/app-interface/npm-registry.d.ts.map +1 -1
  62. package/dist/ai-service/app-interface/npm-registry.js +1882 -153
  63. package/dist/ai-service/app-interface/npm-registry.js.map +1 -1
  64. package/dist/ai-service/app-interface/shell.d.ts +118 -1
  65. package/dist/ai-service/app-interface/shell.d.ts.map +1 -1
  66. package/dist/ai-service/app-interface/shell.js +590 -157
  67. package/dist/ai-service/app-interface/shell.js.map +1 -1
  68. package/dist/ai-service/app-skills/manager.d.ts +1 -1
  69. package/dist/ai-service/app-skills/manager.d.ts.map +1 -1
  70. package/dist/ai-service/app-skills/manager.js +39 -7
  71. package/dist/ai-service/app-skills/manager.js.map +1 -1
  72. package/dist/ai-service/checklist/api-migration-checklist-gate.d.ts +9 -0
  73. package/dist/ai-service/checklist/api-migration-checklist-gate.d.ts.map +1 -0
  74. package/dist/ai-service/checklist/api-migration-checklist-gate.js +30 -0
  75. package/dist/ai-service/checklist/api-migration-checklist-gate.js.map +1 -0
  76. package/dist/ai-service/checklist/api-migration-origins.d.ts +4 -0
  77. package/dist/ai-service/checklist/api-migration-origins.d.ts.map +1 -0
  78. package/dist/ai-service/checklist/api-migration-origins.js +8 -0
  79. package/dist/ai-service/checklist/api-migration-origins.js.map +1 -0
  80. package/dist/ai-service/checklist/persisted-checklist-store.d.ts +2 -3
  81. package/dist/ai-service/checklist/persisted-checklist-store.d.ts.map +1 -1
  82. package/dist/ai-service/checklist/persisted-checklist-store.js +6 -7
  83. package/dist/ai-service/checklist/persisted-checklist-store.js.map +1 -1
  84. package/dist/ai-service/context-archive-paths.d.ts +4 -0
  85. package/dist/ai-service/context-archive-paths.d.ts.map +1 -0
  86. package/dist/ai-service/context-archive-paths.js +28 -0
  87. package/dist/ai-service/context-archive-paths.js.map +1 -0
  88. package/dist/ai-service/context-download.d.ts +3 -1
  89. package/dist/ai-service/context-download.d.ts.map +1 -1
  90. package/dist/ai-service/context-download.js +48 -9
  91. package/dist/ai-service/context-download.js.map +1 -1
  92. package/dist/ai-service/context-upload.d.ts +3 -2
  93. package/dist/ai-service/context-upload.d.ts.map +1 -1
  94. package/dist/ai-service/context-upload.js +44 -26
  95. package/dist/ai-service/context-upload.js.map +1 -1
  96. package/dist/ai-service/dev-database-client.d.ts +3 -11
  97. package/dist/ai-service/dev-database-client.d.ts.map +1 -1
  98. package/dist/ai-service/dev-database-client.js.map +1 -1
  99. package/dist/ai-service/features.d.ts +4 -0
  100. package/dist/ai-service/features.d.ts.map +1 -1
  101. package/dist/ai-service/features.js +8 -0
  102. package/dist/ai-service/features.js.map +1 -1
  103. package/dist/ai-service/filter-disabled-tools-for-migration.d.ts.map +1 -1
  104. package/dist/ai-service/filter-disabled-tools-for-migration.js +4 -0
  105. package/dist/ai-service/filter-disabled-tools-for-migration.js.map +1 -1
  106. package/dist/ai-service/index.d.ts +103 -0
  107. package/dist/ai-service/index.d.ts.map +1 -1
  108. package/dist/ai-service/index.js +610 -25
  109. package/dist/ai-service/index.js.map +1 -1
  110. package/dist/ai-service/llm/client.d.ts +38 -3
  111. package/dist/ai-service/llm/client.d.ts.map +1 -1
  112. package/dist/ai-service/llm/client.js +73 -22
  113. package/dist/ai-service/llm/client.js.map +1 -1
  114. package/dist/ai-service/llm/context-v2/adapter.d.ts +3 -1
  115. package/dist/ai-service/llm/context-v2/adapter.d.ts.map +1 -1
  116. package/dist/ai-service/llm/context-v2/adapter.js +11 -11
  117. package/dist/ai-service/llm/context-v2/adapter.js.map +1 -1
  118. package/dist/ai-service/llm/context-v2/compaction/client-side.d.ts +44 -0
  119. package/dist/ai-service/llm/context-v2/compaction/client-side.d.ts.map +1 -0
  120. package/dist/ai-service/llm/context-v2/compaction/client-side.js +170 -0
  121. package/dist/ai-service/llm/context-v2/compaction/client-side.js.map +1 -0
  122. package/dist/ai-service/llm/context-v2/compaction/compaction-strategy.d.ts +56 -0
  123. package/dist/ai-service/llm/context-v2/compaction/compaction-strategy.d.ts.map +1 -0
  124. package/dist/ai-service/llm/context-v2/compaction/compaction-strategy.js +9 -0
  125. package/dist/ai-service/llm/context-v2/compaction/compaction-strategy.js.map +1 -0
  126. package/dist/ai-service/llm/context-v2/compaction/index.d.ts +5 -0
  127. package/dist/ai-service/llm/context-v2/compaction/index.d.ts.map +1 -0
  128. package/dist/ai-service/llm/context-v2/compaction/index.js +3 -0
  129. package/dist/ai-service/llm/context-v2/compaction/index.js.map +1 -0
  130. package/dist/ai-service/llm/context-v2/compaction/server-side.d.ts +30 -0
  131. package/dist/ai-service/llm/context-v2/compaction/server-side.d.ts.map +1 -0
  132. package/dist/ai-service/llm/context-v2/compaction/server-side.js +130 -0
  133. package/dist/ai-service/llm/context-v2/compaction/server-side.js.map +1 -0
  134. package/dist/ai-service/llm/context-v2/context-management.d.ts +203 -0
  135. package/dist/ai-service/llm/context-v2/context-management.d.ts.map +1 -0
  136. package/dist/ai-service/llm/context-v2/context-management.js +183 -0
  137. package/dist/ai-service/llm/context-v2/context-management.js.map +1 -0
  138. package/dist/ai-service/llm/context-v2/context.d.ts +64 -22
  139. package/dist/ai-service/llm/context-v2/context.d.ts.map +1 -1
  140. package/dist/ai-service/llm/context-v2/context.js +233 -157
  141. package/dist/ai-service/llm/context-v2/context.js.map +1 -1
  142. package/dist/ai-service/llm/context-v2/conversation-context.d.ts +24 -7
  143. package/dist/ai-service/llm/context-v2/conversation-context.d.ts.map +1 -1
  144. package/dist/ai-service/llm/context-v2/conversation-context.js +1 -1
  145. package/dist/ai-service/llm/context-v2/index.d.ts +0 -4
  146. package/dist/ai-service/llm/context-v2/index.d.ts.map +1 -1
  147. package/dist/ai-service/llm/context-v2/index.js +0 -4
  148. package/dist/ai-service/llm/context-v2/index.js.map +1 -1
  149. package/dist/ai-service/llm/context-v2/manager.d.ts +24 -3
  150. package/dist/ai-service/llm/context-v2/manager.d.ts.map +1 -1
  151. package/dist/ai-service/llm/context-v2/manager.js +146 -4
  152. package/dist/ai-service/llm/context-v2/manager.js.map +1 -1
  153. package/dist/ai-service/llm/context-v2/migrations/v1-to-v2.d.ts +2 -7
  154. package/dist/ai-service/llm/context-v2/migrations/v1-to-v2.d.ts.map +1 -1
  155. package/dist/ai-service/llm/context-v2/migrations/v1-to-v2.js +5 -73
  156. package/dist/ai-service/llm/context-v2/migrations/v1-to-v2.js.map +1 -1
  157. package/dist/ai-service/llm/context-v2/storage/event-store.d.ts +57 -0
  158. package/dist/ai-service/llm/context-v2/storage/event-store.d.ts.map +1 -0
  159. package/dist/ai-service/llm/context-v2/storage/event-store.js +10 -0
  160. package/dist/ai-service/llm/context-v2/storage/event-store.js.map +1 -0
  161. package/dist/ai-service/llm/context-v2/storage/event-types.d.ts +50 -0
  162. package/dist/ai-service/llm/context-v2/storage/event-types.d.ts.map +1 -0
  163. package/dist/ai-service/llm/context-v2/storage/event-types.js +10 -0
  164. package/dist/ai-service/llm/context-v2/storage/event-types.js.map +1 -0
  165. package/dist/ai-service/llm/context-v2/storage/jsonl-event-store.d.ts +87 -0
  166. package/dist/ai-service/llm/context-v2/storage/jsonl-event-store.d.ts.map +1 -0
  167. package/dist/ai-service/llm/context-v2/storage/jsonl-event-store.js +184 -0
  168. package/dist/ai-service/llm/context-v2/storage/jsonl-event-store.js.map +1 -0
  169. package/dist/ai-service/llm/context-v2/storage/migration.d.ts +49 -0
  170. package/dist/ai-service/llm/context-v2/storage/migration.d.ts.map +1 -0
  171. package/dist/ai-service/llm/context-v2/storage/migration.js +126 -0
  172. package/dist/ai-service/llm/context-v2/storage/migration.js.map +1 -0
  173. package/dist/ai-service/llm/context-v2/types.d.ts +16 -11
  174. package/dist/ai-service/llm/context-v2/types.d.ts.map +1 -1
  175. package/dist/ai-service/llm/context-v2/types.js +2 -2
  176. package/dist/ai-service/llm/context-v2/types.js.map +1 -1
  177. package/dist/ai-service/llm/impl/clark.d.ts +8 -0
  178. package/dist/ai-service/llm/impl/clark.d.ts.map +1 -1
  179. package/dist/ai-service/llm/impl/clark.js +8 -0
  180. package/dist/ai-service/llm/impl/clark.js.map +1 -1
  181. package/dist/ai-service/llm/interaction/adapters/vercel.d.ts.map +1 -1
  182. package/dist/ai-service/llm/interaction/adapters/vercel.js +17 -1
  183. package/dist/ai-service/llm/interaction/adapters/vercel.js.map +1 -1
  184. package/dist/ai-service/llm/provider.d.ts.map +1 -1
  185. package/dist/ai-service/llm/provider.js +1 -3
  186. package/dist/ai-service/llm/provider.js.map +1 -1
  187. package/dist/ai-service/llm/stream/observers/context.d.ts +23 -0
  188. package/dist/ai-service/llm/stream/observers/context.d.ts.map +1 -1
  189. package/dist/ai-service/llm/stream/observers/context.js +62 -0
  190. package/dist/ai-service/llm/stream/observers/context.js.map +1 -1
  191. package/dist/ai-service/llm/tool-context-integrity.d.ts +25 -0
  192. package/dist/ai-service/llm/tool-context-integrity.d.ts.map +1 -0
  193. package/dist/ai-service/llm/tool-context-integrity.js +141 -0
  194. package/dist/ai-service/llm/tool-context-integrity.js.map +1 -0
  195. package/dist/ai-service/skills/system/superblocks-migration/skill.generated.d.ts +1 -1
  196. package/dist/ai-service/skills/system/superblocks-migration/skill.generated.d.ts.map +1 -1
  197. package/dist/ai-service/skills/system/superblocks-migration/skill.generated.js +6 -1
  198. package/dist/ai-service/skills/system/superblocks-migration/skill.generated.js.map +1 -1
  199. package/dist/ai-service/skills/system/third-party-migration/skill.generated.d.ts +1 -1
  200. package/dist/ai-service/skills/system/third-party-migration/skill.generated.d.ts.map +1 -1
  201. package/dist/ai-service/skills/system/third-party-migration/skill.generated.js +3 -2
  202. package/dist/ai-service/skills/system/third-party-migration/skill.generated.js.map +1 -1
  203. package/dist/ai-service/state-machine/clark-fsm.d.ts +23 -2
  204. package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
  205. package/dist/ai-service/state-machine/clark-fsm.js +37 -2
  206. package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
  207. package/dist/ai-service/state-machine/handlers/agent-planning.d.ts.map +1 -1
  208. package/dist/ai-service/state-machine/handlers/agent-planning.js +29 -2
  209. package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
  210. package/dist/ai-service/state-machine/handlers/awaiting-user.d.ts.map +1 -1
  211. package/dist/ai-service/state-machine/handlers/awaiting-user.js +9 -0
  212. package/dist/ai-service/state-machine/handlers/awaiting-user.js.map +1 -1
  213. package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
  214. package/dist/ai-service/state-machine/handlers/llm-generating.js +25 -2
  215. package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
  216. package/dist/ai-service/state-machine/helpers/fetch-with-reconnect-retry.d.ts +6 -0
  217. package/dist/ai-service/state-machine/helpers/fetch-with-reconnect-retry.d.ts.map +1 -0
  218. package/dist/ai-service/state-machine/helpers/fetch-with-reconnect-retry.js +36 -0
  219. package/dist/ai-service/state-machine/helpers/fetch-with-reconnect-retry.js.map +1 -0
  220. package/dist/ai-service/state-machine/helpers/stable-peer.d.ts +30 -1
  221. package/dist/ai-service/state-machine/helpers/stable-peer.d.ts.map +1 -1
  222. package/dist/ai-service/state-machine/helpers/stable-peer.js +85 -2
  223. package/dist/ai-service/state-machine/helpers/stable-peer.js.map +1 -1
  224. package/dist/ai-service/state-machine/helpers/user-preferences.d.ts +8 -0
  225. package/dist/ai-service/state-machine/helpers/user-preferences.d.ts.map +1 -0
  226. package/dist/ai-service/state-machine/helpers/user-preferences.js +11 -0
  227. package/dist/ai-service/state-machine/helpers/user-preferences.js.map +1 -0
  228. package/dist/ai-service/template-renderer.d.ts +18 -1
  229. package/dist/ai-service/template-renderer.d.ts.map +1 -1
  230. package/dist/ai-service/template-renderer.js +85 -20
  231. package/dist/ai-service/template-renderer.js.map +1 -1
  232. package/dist/ai-service/types.d.ts +157 -0
  233. package/dist/ai-service/types.d.ts.map +1 -1
  234. package/dist/ai-service/types.js +137 -0
  235. package/dist/ai-service/types.js.map +1 -1
  236. package/dist/ai-service/util/llm-config-utils.d.ts +21 -22
  237. package/dist/ai-service/util/llm-config-utils.d.ts.map +1 -1
  238. package/dist/ai-service/util/llm-config-utils.js +40 -67
  239. package/dist/ai-service/util/llm-config-utils.js.map +1 -1
  240. package/dist/file-sync-vite-plugin.d.ts.map +1 -1
  241. package/dist/file-sync-vite-plugin.js +5 -0
  242. package/dist/file-sync-vite-plugin.js.map +1 -1
  243. package/dist/file-system-helpers.d.ts +17 -0
  244. package/dist/file-system-helpers.d.ts.map +1 -1
  245. package/dist/file-system-helpers.js +22 -0
  246. package/dist/file-system-helpers.js.map +1 -1
  247. package/dist/git-service/index.d.ts.map +1 -1
  248. package/dist/git-service/index.js +15 -1
  249. package/dist/git-service/index.js.map +1 -1
  250. package/dist/migration/migration-routes.d.ts.map +1 -1
  251. package/dist/migration/migration-routes.js +26 -3
  252. package/dist/migration/migration-routes.js.map +1 -1
  253. package/dist/migration/translation-prompt.d.ts.map +1 -1
  254. package/dist/migration/translation-prompt.js +5 -0
  255. package/dist/migration/translation-prompt.js.map +1 -1
  256. package/dist/migration-templates/app-fullstack/package.json +2 -2
  257. package/dist/policy-gate-callback-mapper.d.ts +24 -0
  258. package/dist/policy-gate-callback-mapper.d.ts.map +1 -0
  259. package/dist/policy-gate-callback-mapper.js +61 -0
  260. package/dist/policy-gate-callback-mapper.js.map +1 -0
  261. package/dist/policy-gate-runner.d.ts +32 -0
  262. package/dist/policy-gate-runner.d.ts.map +1 -0
  263. package/dist/policy-gate-runner.js +191 -0
  264. package/dist/policy-gate-runner.js.map +1 -0
  265. package/dist/router-parser.d.ts.map +1 -1
  266. package/dist/router-parser.js +107 -11
  267. package/dist/router-parser.js.map +1 -1
  268. package/dist/sync-service/list-dir.d.ts.map +1 -1
  269. package/dist/sync-service/list-dir.js +13 -3
  270. package/dist/sync-service/list-dir.js.map +1 -1
  271. package/package.json +28 -10
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compaction-strategy.js","sourceRoot":"","sources":["../../../../../src/ai-service/llm/context-v2/compaction/compaction-strategy.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -0,0 +1,5 @@
1
+ export type { CompactionStrategy, CompactionStrategyResult, } from "./compaction-strategy.js";
2
+ export { ClientSideCompactionStrategy } from "./client-side.js";
3
+ export type { ClientSideCompactionOptions } from "./client-side.js";
4
+ export { ServerSideCompactionStrategy } from "./server-side.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/ai-service/llm/context-v2/compaction/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,4BAA4B,EAAE,MAAM,kBAAkB,CAAC;AAChE,YAAY,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,4BAA4B,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { ClientSideCompactionStrategy } from "./client-side.js";
2
+ export { ServerSideCompactionStrategy } from "./server-side.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/ai-service/llm/context-v2/compaction/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,4BAA4B,EAAE,MAAM,kBAAkB,CAAC;AAEhE,OAAO,EAAE,4BAA4B,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Server-side compaction strategy that delegates to Anthropic's context management.
3
+ *
4
+ * Does not perform any local compaction. Instead, reacts to compaction events
5
+ * detected in response metadata by inserting a marker message.
6
+ */
7
+ import type { LanguageModelUsage, ModelMessage } from "ai";
8
+ import type { ContextOptionsV2 } from "../config.js";
9
+ import type { StoredMessage, SuperblocksMetadata, CompactionSummary, CompactionCallbacks } from "../types.js";
10
+ import type { CompactionStrategy, CompactionStrategyResult } from "./compaction-strategy.js";
11
+ /**
12
+ * Compaction strategy that relies on Anthropic's server-side `clear_tool_uses`
13
+ * and `compact` edits. Locally, it only tracks protection flags and reacts
14
+ * to compaction detection by inserting a summary marker.
15
+ */
16
+ export declare class ServerSideCompactionStrategy implements CompactionStrategy {
17
+ private pendingProtection;
18
+ updateConfig(_config: Partial<ContextOptionsV2>): void;
19
+ storeSummary(toolCallId: string, summary: CompactionSummary): void;
20
+ setCallbacks(_callbacks: CompactionCallbacks | undefined): void;
21
+ collectAssistantMetadata(_message: ModelMessage): Partial<SuperblocksMetadata> | undefined;
22
+ collectToolMetadata(message: ModelMessage): Partial<SuperblocksMetadata> | undefined;
23
+ afterResponse(_params: {
24
+ messages: StoredMessage[];
25
+ usage: LanguageModelUsage;
26
+ }): Promise<CompactionStrategyResult>;
27
+ onCompactionDetected(messages: StoredMessage[]): CompactionStrategyResult;
28
+ getProtectedToolNames(messages: StoredMessage[]): string[];
29
+ }
30
+ //# sourceMappingURL=server-side.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-side.d.ts","sourceRoot":"","sources":["../../../../../src/ai-service/llm/context-v2/compaction/server-side.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAG3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EACV,kBAAkB,EAClB,wBAAwB,EACzB,MAAM,0BAA0B,CAAC;AAIlC;;;;GAIG;AACH,qBAAa,4BAA6B,YAAW,kBAAkB;IACrE,OAAO,CAAC,iBAAiB,CAAqB;IAE9C,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAItD,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAMlE,YAAY,CAAC,UAAU,EAAE,mBAAmB,GAAG,SAAS,GAAG,IAAI;IAI/D,wBAAwB,CACtB,QAAQ,EAAE,YAAY,GACrB,OAAO,CAAC,mBAAmB,CAAC,GAAG,SAAS;IAI3C,mBAAmB,CACjB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,mBAAmB,CAAC,GAAG,SAAS;IAwBrC,aAAa,CAAC,OAAO,EAAE;QAC3B,QAAQ,EAAE,aAAa,EAAE,CAAC;QAC1B,KAAK,EAAE,kBAAkB,CAAC;KAC3B,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAIrC,oBAAoB,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,wBAAwB;IAiEzE,qBAAqB,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,MAAM,EAAE;CA6B3D"}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Server-side compaction strategy that delegates to Anthropic's context management.
3
+ *
4
+ * Does not perform any local compaction. Instead, reacts to compaction events
5
+ * detected in response metadata by inserting a marker message.
6
+ */
7
+ import { getPrefixedLogger } from "../../../../util/logger.js";
8
+ const logger = getPrefixedLogger("[compaction:server-side]");
9
+ /**
10
+ * Compaction strategy that relies on Anthropic's server-side `clear_tool_uses`
11
+ * and `compact` edits. Locally, it only tracks protection flags and reacts
12
+ * to compaction detection by inserting a summary marker.
13
+ */
14
+ export class ServerSideCompactionStrategy {
15
+ pendingProtection = new Set();
16
+ updateConfig(_config) {
17
+ // No-op — server-side compaction holds no config that varies at runtime.
18
+ }
19
+ storeSummary(toolCallId, summary) {
20
+ if (summary.protected) {
21
+ this.pendingProtection.add(toolCallId);
22
+ }
23
+ }
24
+ setCallbacks(_callbacks) {
25
+ // No-op — server-side compaction has no client progress callbacks.
26
+ }
27
+ collectAssistantMetadata(_message) {
28
+ return undefined;
29
+ }
30
+ collectToolMetadata(message) {
31
+ if (message.role !== "tool" || !Array.isArray(message.content)) {
32
+ return undefined;
33
+ }
34
+ const toolCallIds = message.content
35
+ .filter((p) => p.type === "tool-result" && p.toolCallId)
36
+ .map((p) => p.toolCallId);
37
+ const protectedResults = {};
38
+ for (const id of toolCallIds) {
39
+ if (this.pendingProtection.has(id)) {
40
+ protectedResults[id] = true;
41
+ this.pendingProtection.delete(id);
42
+ }
43
+ }
44
+ return Object.keys(protectedResults).length > 0
45
+ ? { protected: protectedResults }
46
+ : undefined;
47
+ }
48
+ async afterResponse(_params) {
49
+ return {};
50
+ }
51
+ onCompactionDetected(messages) {
52
+ // Mirror what `JsonlEventStore.loadMessages` returns on a fresh load
53
+ // after a `compaction_received` event has been written: a compaction
54
+ // marker followed by everything from the current turn forward. Within
55
+ // an in-memory session we have to do this trim ourselves — leaving
56
+ // the full history in `this.messages` means every subsequent request
57
+ // re-sends all the pre-compact tokens, Anthropic re-applies
58
+ // `compact_20260112` on each turn, and the agent never converges
59
+ // (observed on PR #18617: a single anthropic eval ran 141 LLM steps,
60
+ // fired 146 compaction events, and timed out at the 30m job
61
+ // boundary). The session is supposed to live "after" the
62
+ // compaction anchor; this method makes that true in memory as well
63
+ // as on disk.
64
+ //
65
+ // Trim to the last user message because that marks the start of the
66
+ // current turn - the agent may be mid-flight on a tool call /
67
+ // tool-result chain we don't want to truncate. If a prior client-side
68
+ // phase-2 summary exists, retain the latest one as the compacted
69
+ // prefix for the earlier conversation. This lets sessions safely move
70
+ // client -> server -> client without the server-side trim erasing the
71
+ // only summary of pre-server history.
72
+ let lastUserIndex = -1;
73
+ for (let i = messages.length - 1; i >= 0; i--) {
74
+ if (messages[i]?.role === "user") {
75
+ lastUserIndex = i;
76
+ break;
77
+ }
78
+ }
79
+ if (lastUserIndex < 0) {
80
+ logger.warn("Server-side compaction detected but no user message present; skipping in-memory trim");
81
+ return { skillsNeedReload: true };
82
+ }
83
+ let lastSummaryIndex = -1;
84
+ for (let i = lastUserIndex - 1; i >= 0; i--) {
85
+ if (messages[i]?._superblocks?.isSummary === true) {
86
+ lastSummaryIndex = i;
87
+ break;
88
+ }
89
+ }
90
+ const marker = {
91
+ role: "system",
92
+ content: "Server-side compaction applied",
93
+ _superblocks: { timestamp: Date.now() },
94
+ };
95
+ const retainedPrefix = lastSummaryIndex >= 0 ? [messages[lastSummaryIndex]] : [];
96
+ const trimmed = [
97
+ marker,
98
+ ...retainedPrefix,
99
+ ...messages.slice(lastUserIndex),
100
+ ];
101
+ logger.info(`Server-side compaction detected; trimmed in-memory history ${messages.length} → ${trimmed.length} messages`);
102
+ return { messages: trimmed, skillsNeedReload: true };
103
+ }
104
+ getProtectedToolNames(messages) {
105
+ const toolNames = new Set();
106
+ for (let i = messages.length - 1; i >= 0; i--) {
107
+ const msg = messages[i];
108
+ if (msg?.role !== "tool" ||
109
+ !msg._superblocks?.protected ||
110
+ !Array.isArray(msg.content)) {
111
+ continue;
112
+ }
113
+ for (const part of msg.content) {
114
+ if (typeof part === "object" &&
115
+ part !== null &&
116
+ "type" in part &&
117
+ part.type === "tool-result" &&
118
+ "toolCallId" in part &&
119
+ "toolName" in part) {
120
+ const toolCallId = part.toolCallId;
121
+ if (msg._superblocks.protected[toolCallId]) {
122
+ toolNames.add(part.toolName);
123
+ }
124
+ }
125
+ }
126
+ }
127
+ return [...toolNames];
128
+ }
129
+ }
130
+ //# sourceMappingURL=server-side.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-side.js","sourceRoot":"","sources":["../../../../../src/ai-service/llm/context-v2/compaction/server-side.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,203 @@
1
+ /**
2
+ * Server-side context management configuration for Anthropic provider.
3
+ *
4
+ * Builds the `contextManagement` provider options for the `@ai-sdk/anthropic`
5
+ * SDK, enabling two server-side edit strategies:
6
+ *
7
+ * 1. `clear_tool_uses_20250919` -- removes old tool use/result pairs from
8
+ * context when input tokens exceed a threshold, keeping recent ones and
9
+ * excluding protected tools.
10
+ *
11
+ * 2. `compact_20260112` -- triggers server-side summarization when context
12
+ * grows beyond a second threshold, with optional mode-preserving instructions.
13
+ */
14
+ import type { JSONObject } from "@ai-sdk/provider";
15
+ import type { LanguageModel } from "ai";
16
+ import type { ServerContextManagementOptions } from "@superblocksteam/library-shared/types";
17
+ /**
18
+ * Input token threshold at which old tool use/result pairs are cleared.
19
+ *
20
+ * Set below the compact trigger so tool clearing happens first, reducing
21
+ * context size without losing conversational continuity. 100k tokens is
22
+ * roughly 60-70% of a typical 150k context window.
23
+ */
24
+ export declare const CLEAR_TOOL_USES_TRIGGER_TOKENS = 100000;
25
+ /**
26
+ * Input token threshold at which server-side compaction (summarization) fires.
27
+ *
28
+ * Set higher than the clear trigger so compaction is a second line of defense.
29
+ * 150k tokens leaves headroom for the output budget in a 200k context window.
30
+ */
31
+ export declare const COMPACT_TRIGGER_TOKENS = 150000;
32
+ /**
33
+ * Number of recent tool use/result pairs to keep when clearing.
34
+ *
35
+ * Keeping 6 recent tool uses preserves the most recent multi-step
36
+ * tool call chain (e.g., read -> edit -> verify pattern).
37
+ */
38
+ export declare const KEEP_RECENT_TOOL_USES = 6;
39
+ /**
40
+ * Minimum number of input tokens to clear when the clear trigger fires.
41
+ *
42
+ * Prevents trivial clears that would break prompt caching by forcing
43
+ * each clear to reclaim at least 10k tokens of context. Without this,
44
+ * the server might clear a single small tool result and immediately
45
+ * invalidate the cache prefix.
46
+ */
47
+ export declare const CLEAR_AT_LEAST_TOKENS = 10000;
48
+ /**
49
+ * Client-side context management: compaction runs locally via Phase 1
50
+ * (tool output redaction) and Phase 2 (LLM session summarization).
51
+ */
52
+ interface ClientContextManagement {
53
+ readonly type: "client";
54
+ /** Model used for Phase 2 summarization. */
55
+ readonly summarizationModel: LanguageModel;
56
+ }
57
+ /**
58
+ * Server-side context management: compaction is delegated to Anthropic's
59
+ * `clear_tool_uses` and `compact` edits sent via provider options.
60
+ */
61
+ interface ServerContextManagement {
62
+ readonly type: "server";
63
+ /** Tool names to exclude from clear_tool_uses (e.g., protected system skill reads). */
64
+ readonly excludeTools?: readonly string[];
65
+ /** Instructions for the compaction summarizer (e.g., mode state to preserve). */
66
+ readonly modeInstructions?: string;
67
+ /** Threshold overrides for server-side context management (e.g., from LaunchDarkly). */
68
+ readonly thresholds?: Partial<ServerContextManagementOptions>;
69
+ }
70
+ /**
71
+ * Discriminated union for context management strategy selection.
72
+ *
73
+ * - `client`: compaction runs locally (Phase 1 + Phase 2 LLM summarization).
74
+ * - `server`: compaction is delegated to Anthropic's managed edits.
75
+ */
76
+ export type ContextManagementOptions = ClientContextManagement | ServerContextManagement;
77
+ /**
78
+ * Choose the compaction strategy for a request from the
79
+ * `serverContextManagement.enabled` LD-flag field.
80
+ *
81
+ * Defaults to client-side: only an explicit `enabled === true` flips
82
+ * to server-side (Anthropic's `compact_20260112` /
83
+ * `clear_tool_uses_20250919`). `enabled === false`, `enabled ===
84
+ * undefined`, and missing-flag payloads all resolve to client-side
85
+ * (phase 1 + phase 2 LLM session summarization). Opt-in by design
86
+ * because the server-side path is newer, only validated on Anthropic
87
+ * variants of the SDK, and its behavior on long sessions depends on
88
+ * the in-memory trim that `ServerSideCompactionStrategy` performs on
89
+ * compaction-detected — easier to roll forward with explicit gating
90
+ * than to roll back from a default-on regression.
91
+ *
92
+ * Lives here (not in clark-fsm) so it can be unit-tested independently
93
+ * of the FSM's heavyweight construction.
94
+ */
95
+ export declare function selectContextManagementStrategy(options: {
96
+ serverContextManagementEnabled: boolean | undefined;
97
+ modeInstructions: string | undefined;
98
+ thresholds?: Partial<ServerContextManagementOptions>;
99
+ summarizationModel: () => LanguageModel;
100
+ }): ContextManagementOptions;
101
+ /**
102
+ * Internal options for `ContextManagementConfig.build()`.
103
+ *
104
+ * Decoupled from the public union because callers pass the discriminated
105
+ * union while `processLLMConfig` extracts and merges the fields needed
106
+ * by the config builder.
107
+ */
108
+ export interface ContextManagementBuildOptions {
109
+ /** Tool names to exclude from clear_tool_uses (e.g., protected system skill reads). */
110
+ readonly excludeTools?: readonly string[];
111
+ /** Instructions for the compaction summarizer (e.g., mode state to preserve). */
112
+ readonly modeInstructions?: string;
113
+ /** LaunchDarkly-driven threshold overrides for server-side context management. */
114
+ readonly thresholds?: Partial<ServerContextManagementOptions>;
115
+ }
116
+ /** clear_tool_uses_20250919 edit: removes old tool use/result pairs. */
117
+ interface ClearToolUsesEdit {
118
+ type: "clear_tool_uses_20250919";
119
+ trigger: {
120
+ type: "input_tokens";
121
+ value: number;
122
+ };
123
+ keep: {
124
+ type: "tool_uses";
125
+ value: number;
126
+ };
127
+ clearAtLeast: {
128
+ type: "input_tokens";
129
+ value: number;
130
+ };
131
+ clearToolInputs: boolean;
132
+ excludeTools?: string[];
133
+ }
134
+ /** compact_20260112 edit: summarizes the conversation in place. */
135
+ interface CompactEdit {
136
+ type: "compact_20260112";
137
+ trigger: {
138
+ type: "input_tokens";
139
+ value: number;
140
+ };
141
+ instructions?: string;
142
+ }
143
+ /**
144
+ * Discriminated union over the edit shapes Anthropic's context management
145
+ * accepts. The flat form previously used here permitted nonsensical
146
+ * combinations (e.g. `compact_20260112` with `clearToolInputs`), making the
147
+ * contract ambiguous at the type level.
148
+ */
149
+ type ContextManagementEdit = ClearToolUsesEdit | CompactEdit;
150
+ /**
151
+ * Shape returned by `ContextManagementConfig.build()`.
152
+ *
153
+ * Uses `JSONObject` so it can be directly embedded in `providerOptions.anthropic`
154
+ * without type incompatibility with the AI SDK's `SharedV3ProviderOptions`.
155
+ */
156
+ export type ContextManagementResult = JSONObject & {
157
+ edits: ContextManagementEdit[];
158
+ };
159
+ /**
160
+ * Bedrock beta feature flags required for context management.
161
+ *
162
+ * These are passed via `additionalModelRequestFields.anthropic_beta`
163
+ * in the Bedrock InvokeModel request body.
164
+ */
165
+ export declare const BEDROCK_CONTEXT_MANAGEMENT_BETAS: readonly ["context-management-2025-06-27", "compact-2026-01-12"];
166
+ /**
167
+ * Builds the Anthropic `contextManagement` provider options.
168
+ *
169
+ * This class encapsulates the configuration for server-side context
170
+ * management edits -- tool-use clearing and compaction. The output
171
+ * is passed as `providerOptions.anthropic.contextManagement` in
172
+ * `streamText` calls for direct Anthropic, and translated to
173
+ * `additionalModelRequestFields.context_management` for Bedrock.
174
+ */
175
+ export declare class ContextManagementConfig {
176
+ /**
177
+ * Build the context management configuration for `providerOptions.anthropic`.
178
+ *
179
+ * The `@ai-sdk/anthropic` provider handles beta header injection and
180
+ * camelCase-to-snake_case translation automatically.
181
+ *
182
+ * @param options - Optional overrides for exclude lists and compaction instructions
183
+ * @returns The `contextManagement` object for `providerOptions.anthropic`
184
+ */
185
+ static build(options?: ContextManagementBuildOptions): ContextManagementResult;
186
+ /**
187
+ * Build the context management fields for `providerOptions.bedrock.additionalModelRequestFields`.
188
+ *
189
+ * Bedrock InvokeModel uses snake_case field names and requires explicit
190
+ * `anthropic_beta` array in the request body (not HTTP headers). This method
191
+ * returns the fields to merge into `additionalModelRequestFields`.
192
+ *
193
+ * @param options - Optional overrides for exclude lists and compaction instructions
194
+ * @returns Object with `context_management` and `anthropic_beta` for Bedrock
195
+ */
196
+ static buildForBedrock(options?: ContextManagementBuildOptions): JSONObject;
197
+ /**
198
+ * Build the shared edit entries used by both Anthropic and Bedrock formats.
199
+ */
200
+ private static buildEdits;
201
+ }
202
+ export {};
203
+ //# sourceMappingURL=context-management.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-management.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/llm/context-v2/context-management.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,183 @@
1
+ /**
2
+ * Server-side context management configuration for Anthropic provider.
3
+ *
4
+ * Builds the `contextManagement` provider options for the `@ai-sdk/anthropic`
5
+ * SDK, enabling two server-side edit strategies:
6
+ *
7
+ * 1. `clear_tool_uses_20250919` -- removes old tool use/result pairs from
8
+ * context when input tokens exceed a threshold, keeping recent ones and
9
+ * excluding protected tools.
10
+ *
11
+ * 2. `compact_20260112` -- triggers server-side summarization when context
12
+ * grows beyond a second threshold, with optional mode-preserving instructions.
13
+ */
14
+ /**
15
+ * Input token threshold at which old tool use/result pairs are cleared.
16
+ *
17
+ * Set below the compact trigger so tool clearing happens first, reducing
18
+ * context size without losing conversational continuity. 100k tokens is
19
+ * roughly 60-70% of a typical 150k context window.
20
+ */
21
+ export const CLEAR_TOOL_USES_TRIGGER_TOKENS = 100_000;
22
+ /**
23
+ * Input token threshold at which server-side compaction (summarization) fires.
24
+ *
25
+ * Set higher than the clear trigger so compaction is a second line of defense.
26
+ * 150k tokens leaves headroom for the output budget in a 200k context window.
27
+ */
28
+ export const COMPACT_TRIGGER_TOKENS = 150_000;
29
+ /**
30
+ * Number of recent tool use/result pairs to keep when clearing.
31
+ *
32
+ * Keeping 6 recent tool uses preserves the most recent multi-step
33
+ * tool call chain (e.g., read -> edit -> verify pattern).
34
+ */
35
+ export const KEEP_RECENT_TOOL_USES = 6;
36
+ /**
37
+ * Minimum number of input tokens to clear when the clear trigger fires.
38
+ *
39
+ * Prevents trivial clears that would break prompt caching by forcing
40
+ * each clear to reclaim at least 10k tokens of context. Without this,
41
+ * the server might clear a single small tool result and immediately
42
+ * invalidate the cache prefix.
43
+ */
44
+ export const CLEAR_AT_LEAST_TOKENS = 10_000;
45
+ /**
46
+ * Choose the compaction strategy for a request from the
47
+ * `serverContextManagement.enabled` LD-flag field.
48
+ *
49
+ * Defaults to client-side: only an explicit `enabled === true` flips
50
+ * to server-side (Anthropic's `compact_20260112` /
51
+ * `clear_tool_uses_20250919`). `enabled === false`, `enabled ===
52
+ * undefined`, and missing-flag payloads all resolve to client-side
53
+ * (phase 1 + phase 2 LLM session summarization). Opt-in by design
54
+ * because the server-side path is newer, only validated on Anthropic
55
+ * variants of the SDK, and its behavior on long sessions depends on
56
+ * the in-memory trim that `ServerSideCompactionStrategy` performs on
57
+ * compaction-detected — easier to roll forward with explicit gating
58
+ * than to roll back from a default-on regression.
59
+ *
60
+ * Lives here (not in clark-fsm) so it can be unit-tested independently
61
+ * of the FSM's heavyweight construction.
62
+ */
63
+ export function selectContextManagementStrategy(options) {
64
+ if (options.serverContextManagementEnabled === true) {
65
+ return {
66
+ type: "server",
67
+ ...(options.modeInstructions !== undefined && {
68
+ modeInstructions: options.modeInstructions,
69
+ }),
70
+ ...(options.thresholds !== undefined && {
71
+ thresholds: options.thresholds,
72
+ }),
73
+ };
74
+ }
75
+ return {
76
+ type: "client",
77
+ summarizationModel: options.summarizationModel(),
78
+ };
79
+ }
80
+ /**
81
+ * Bedrock beta feature flags required for context management.
82
+ *
83
+ * These are passed via `additionalModelRequestFields.anthropic_beta`
84
+ * in the Bedrock InvokeModel request body.
85
+ */
86
+ export const BEDROCK_CONTEXT_MANAGEMENT_BETAS = [
87
+ "context-management-2025-06-27",
88
+ "compact-2026-01-12",
89
+ ];
90
+ /**
91
+ * Builds the Anthropic `contextManagement` provider options.
92
+ *
93
+ * This class encapsulates the configuration for server-side context
94
+ * management edits -- tool-use clearing and compaction. The output
95
+ * is passed as `providerOptions.anthropic.contextManagement` in
96
+ * `streamText` calls for direct Anthropic, and translated to
97
+ * `additionalModelRequestFields.context_management` for Bedrock.
98
+ */
99
+ export class ContextManagementConfig {
100
+ /**
101
+ * Build the context management configuration for `providerOptions.anthropic`.
102
+ *
103
+ * The `@ai-sdk/anthropic` provider handles beta header injection and
104
+ * camelCase-to-snake_case translation automatically.
105
+ *
106
+ * @param options - Optional overrides for exclude lists and compaction instructions
107
+ * @returns The `contextManagement` object for `providerOptions.anthropic`
108
+ */
109
+ static build(options) {
110
+ const edits = ContextManagementConfig.buildEdits(options);
111
+ return { edits };
112
+ }
113
+ /**
114
+ * Build the context management fields for `providerOptions.bedrock.additionalModelRequestFields`.
115
+ *
116
+ * Bedrock InvokeModel uses snake_case field names and requires explicit
117
+ * `anthropic_beta` array in the request body (not HTTP headers). This method
118
+ * returns the fields to merge into `additionalModelRequestFields`.
119
+ *
120
+ * @param options - Optional overrides for exclude lists and compaction instructions
121
+ * @returns Object with `context_management` and `anthropic_beta` for Bedrock
122
+ */
123
+ static buildForBedrock(options) {
124
+ const edits = ContextManagementConfig.buildEdits(options);
125
+ // Bedrock uses snake_case in the InvokeModel request body
126
+ const bedrockEdits = edits.map((edit) => {
127
+ if (edit.type === "clear_tool_uses_20250919") {
128
+ return {
129
+ type: edit.type,
130
+ trigger: edit.trigger,
131
+ keep: edit.keep,
132
+ clear_at_least: edit.clearAtLeast,
133
+ clear_tool_inputs: edit.clearToolInputs,
134
+ ...(edit.excludeTools && { exclude_tools: edit.excludeTools }),
135
+ };
136
+ }
137
+ // compact_20260112 fields are already snake_case compatible
138
+ return edit;
139
+ });
140
+ return {
141
+ context_management: { edits: bedrockEdits },
142
+ anthropic_beta: [...BEDROCK_CONTEXT_MANAGEMENT_BETAS],
143
+ };
144
+ }
145
+ /**
146
+ * Build the shared edit entries used by both Anthropic and Bedrock formats.
147
+ */
148
+ static buildEdits(options) {
149
+ const t = options?.thresholds;
150
+ const excludeTools = options?.excludeTools && options.excludeTools.length > 0
151
+ ? [...options.excludeTools]
152
+ : undefined;
153
+ const clearToolUsesEdit = {
154
+ type: "clear_tool_uses_20250919",
155
+ trigger: {
156
+ type: "input_tokens",
157
+ value: t?.clearToolUsesTriggerTokens ?? CLEAR_TOOL_USES_TRIGGER_TOKENS,
158
+ },
159
+ keep: {
160
+ type: "tool_uses",
161
+ value: t?.keepRecentToolUses ?? KEEP_RECENT_TOOL_USES,
162
+ },
163
+ clearAtLeast: {
164
+ type: "input_tokens",
165
+ value: t?.clearAtLeastTokens ?? CLEAR_AT_LEAST_TOKENS,
166
+ },
167
+ clearToolInputs: false,
168
+ ...(excludeTools && { excludeTools }),
169
+ };
170
+ const compactEdit = {
171
+ type: "compact_20260112",
172
+ trigger: {
173
+ type: "input_tokens",
174
+ value: t?.compactTriggerTokens ?? COMPACT_TRIGGER_TOKENS,
175
+ },
176
+ ...(options?.modeInstructions && {
177
+ instructions: options.modeInstructions,
178
+ }),
179
+ };
180
+ return [clearToolUsesEdit, compactEdit];
181
+ }
182
+ }
183
+ //# sourceMappingURL=context-management.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-management.js","sourceRoot":"","sources":["../../../../src/ai-service/llm/context-v2/context-management.ts"],"names":[],"mappings":"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"}