@superblocksteam/vite-plugin-file-sync 2.0.123 → 2.0.124-next.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.
- package/dist/ai-service/agent/prompts/build-base-system-prompt.d.ts +16 -1
- package/dist/ai-service/agent/prompts/build-base-system-prompt.d.ts.map +1 -1
- package/dist/ai-service/agent/prompts/build-base-system-prompt.js +27 -1
- package/dist/ai-service/agent/prompts/build-base-system-prompt.js.map +1 -1
- package/dist/ai-service/agent/prompts/build-security-scan-prompt.d.ts.map +1 -1
- package/dist/ai-service/agent/prompts/build-security-scan-prompt.js +3 -1
- package/dist/ai-service/agent/prompts/build-security-scan-prompt.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/api-comparator.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/apis/api-comparator.js +1 -4
- package/dist/ai-service/agent/tools/apis/api-comparator.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/api-testing-state.js +7 -0
- package/dist/ai-service/agent/tools/apis/api-testing-state.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/get-api-docs.d.ts +1 -1
- package/dist/ai-service/agent/tools/apis/write-api.d.ts +2 -2
- package/dist/ai-service/agent/tools/build-capture-screenshot.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-capture-screenshot.js +11 -33
- package/dist/ai-service/agent/tools/build-capture-screenshot.js.map +1 -1
- package/dist/ai-service/agent/tools/build-copy-directory.d.ts +1 -1
- package/dist/ai-service/agent/tools/build-finalize.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-finalize.js +11 -2
- package/dist/ai-service/agent/tools/build-finalize.js.map +1 -1
- package/dist/ai-service/agent/tools/build-install-packages.d.ts +41 -1
- package/dist/ai-service/agent/tools/build-install-packages.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-install-packages.js +208 -0
- package/dist/ai-service/agent/tools/build-install-packages.js.map +1 -1
- package/dist/ai-service/agent/tools/build-lookup-npm-package.d.ts +28 -0
- package/dist/ai-service/agent/tools/build-lookup-npm-package.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/build-lookup-npm-package.js +78 -0
- package/dist/ai-service/agent/tools/build-lookup-npm-package.js.map +1 -0
- package/dist/ai-service/agent/tools/build-manage-checklist.d.ts +4 -4
- package/dist/ai-service/agent/tools/build-navigate-preview.d.ts +16 -0
- package/dist/ai-service/agent/tools/build-navigate-preview.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/build-navigate-preview.js +68 -0
- package/dist/ai-service/agent/tools/build-navigate-preview.js.map +1 -0
- package/dist/ai-service/agent/tools/build-write-file.d.ts +1 -1
- package/dist/ai-service/agent/tools/databases/dev-database.d.ts +9 -9
- package/dist/ai-service/agent/tools/index.d.ts +2 -0
- package/dist/ai-service/agent/tools/index.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/index.js +2 -0
- package/dist/ai-service/agent/tools/index.js.map +1 -1
- package/dist/ai-service/agent/tools/integrations/execute-request.d.ts +3 -3
- package/dist/ai-service/agent/tools/report-security-findings.d.ts +11 -5
- package/dist/ai-service/agent/tools/report-security-findings.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/report-security-findings.js +1 -0
- package/dist/ai-service/agent/tools/report-security-findings.js.map +1 -1
- package/dist/ai-service/agent/tools.d.ts.map +1 -1
- package/dist/ai-service/agent/tools.js +3 -1
- package/dist/ai-service/agent/tools.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/git.d.ts +2 -2
- package/dist/ai-service/agent/tools2/tools/grep.d.ts +2 -2
- package/dist/ai-service/agent/tools2/tools/update-test-case-status.d.ts +2 -2
- package/dist/ai-service/app-interface/npm-error-parser.d.ts +161 -0
- package/dist/ai-service/app-interface/npm-error-parser.d.ts.map +1 -0
- package/dist/ai-service/app-interface/npm-error-parser.js +510 -0
- package/dist/ai-service/app-interface/npm-error-parser.js.map +1 -0
- package/dist/ai-service/app-interface/npm-package-lookup.d.ts +286 -0
- package/dist/ai-service/app-interface/npm-package-lookup.d.ts.map +1 -0
- package/dist/ai-service/app-interface/npm-package-lookup.js +793 -0
- package/dist/ai-service/app-interface/npm-package-lookup.js.map +1 -0
- package/dist/ai-service/app-interface/npm-registry.d.ts +735 -47
- package/dist/ai-service/app-interface/npm-registry.d.ts.map +1 -1
- package/dist/ai-service/app-interface/npm-registry.js +1882 -153
- package/dist/ai-service/app-interface/npm-registry.js.map +1 -1
- package/dist/ai-service/app-interface/shell.d.ts +118 -1
- package/dist/ai-service/app-interface/shell.d.ts.map +1 -1
- package/dist/ai-service/app-interface/shell.js +579 -157
- package/dist/ai-service/app-interface/shell.js.map +1 -1
- package/dist/ai-service/app-skills/manager.d.ts +1 -1
- package/dist/ai-service/app-skills/manager.d.ts.map +1 -1
- package/dist/ai-service/app-skills/manager.js +39 -7
- package/dist/ai-service/app-skills/manager.js.map +1 -1
- package/dist/ai-service/checklist/api-migration-checklist-gate.d.ts +9 -0
- package/dist/ai-service/checklist/api-migration-checklist-gate.d.ts.map +1 -0
- package/dist/ai-service/checklist/api-migration-checklist-gate.js +30 -0
- package/dist/ai-service/checklist/api-migration-checklist-gate.js.map +1 -0
- package/dist/ai-service/checklist/api-migration-origins.d.ts +4 -0
- package/dist/ai-service/checklist/api-migration-origins.d.ts.map +1 -0
- package/dist/ai-service/checklist/api-migration-origins.js +8 -0
- package/dist/ai-service/checklist/api-migration-origins.js.map +1 -0
- package/dist/ai-service/checklist/persisted-checklist-store.d.ts +2 -3
- package/dist/ai-service/checklist/persisted-checklist-store.d.ts.map +1 -1
- package/dist/ai-service/checklist/persisted-checklist-store.js +6 -7
- package/dist/ai-service/checklist/persisted-checklist-store.js.map +1 -1
- package/dist/ai-service/context-archive-paths.d.ts +4 -0
- package/dist/ai-service/context-archive-paths.d.ts.map +1 -0
- package/dist/ai-service/context-archive-paths.js +28 -0
- package/dist/ai-service/context-archive-paths.js.map +1 -0
- package/dist/ai-service/context-download.d.ts +3 -1
- package/dist/ai-service/context-download.d.ts.map +1 -1
- package/dist/ai-service/context-download.js +48 -9
- package/dist/ai-service/context-download.js.map +1 -1
- package/dist/ai-service/context-upload.d.ts +3 -2
- package/dist/ai-service/context-upload.d.ts.map +1 -1
- package/dist/ai-service/context-upload.js +44 -26
- package/dist/ai-service/context-upload.js.map +1 -1
- package/dist/ai-service/dev-database-client.d.ts +3 -11
- package/dist/ai-service/dev-database-client.d.ts.map +1 -1
- package/dist/ai-service/dev-database-client.js.map +1 -1
- package/dist/ai-service/features.d.ts +4 -0
- package/dist/ai-service/features.d.ts.map +1 -1
- package/dist/ai-service/features.js +8 -0
- package/dist/ai-service/features.js.map +1 -1
- package/dist/ai-service/filter-disabled-tools-for-migration.d.ts.map +1 -1
- package/dist/ai-service/filter-disabled-tools-for-migration.js +4 -0
- package/dist/ai-service/filter-disabled-tools-for-migration.js.map +1 -1
- package/dist/ai-service/index.d.ts +94 -0
- package/dist/ai-service/index.d.ts.map +1 -1
- package/dist/ai-service/index.js +564 -17
- package/dist/ai-service/index.js.map +1 -1
- package/dist/ai-service/llm/client.d.ts +38 -3
- package/dist/ai-service/llm/client.d.ts.map +1 -1
- package/dist/ai-service/llm/client.js +73 -22
- package/dist/ai-service/llm/client.js.map +1 -1
- package/dist/ai-service/llm/context-v2/adapter.d.ts +3 -1
- package/dist/ai-service/llm/context-v2/adapter.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/adapter.js +11 -11
- package/dist/ai-service/llm/context-v2/adapter.js.map +1 -1
- package/dist/ai-service/llm/context-v2/compaction/client-side.d.ts +44 -0
- package/dist/ai-service/llm/context-v2/compaction/client-side.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/compaction/client-side.js +170 -0
- package/dist/ai-service/llm/context-v2/compaction/client-side.js.map +1 -0
- package/dist/ai-service/llm/context-v2/compaction/compaction-strategy.d.ts +56 -0
- package/dist/ai-service/llm/context-v2/compaction/compaction-strategy.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/compaction/compaction-strategy.js +9 -0
- package/dist/ai-service/llm/context-v2/compaction/compaction-strategy.js.map +1 -0
- package/dist/ai-service/llm/context-v2/compaction/index.d.ts +5 -0
- package/dist/ai-service/llm/context-v2/compaction/index.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/compaction/index.js +3 -0
- package/dist/ai-service/llm/context-v2/compaction/index.js.map +1 -0
- package/dist/ai-service/llm/context-v2/compaction/server-side.d.ts +30 -0
- package/dist/ai-service/llm/context-v2/compaction/server-side.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/compaction/server-side.js +130 -0
- package/dist/ai-service/llm/context-v2/compaction/server-side.js.map +1 -0
- package/dist/ai-service/llm/context-v2/context-management.d.ts +203 -0
- package/dist/ai-service/llm/context-v2/context-management.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/context-management.js +183 -0
- package/dist/ai-service/llm/context-v2/context-management.js.map +1 -0
- package/dist/ai-service/llm/context-v2/context.d.ts +64 -22
- package/dist/ai-service/llm/context-v2/context.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/context.js +233 -157
- package/dist/ai-service/llm/context-v2/context.js.map +1 -1
- package/dist/ai-service/llm/context-v2/conversation-context.d.ts +24 -7
- package/dist/ai-service/llm/context-v2/conversation-context.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/conversation-context.js +1 -1
- package/dist/ai-service/llm/context-v2/index.d.ts +0 -4
- package/dist/ai-service/llm/context-v2/index.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/index.js +0 -4
- package/dist/ai-service/llm/context-v2/index.js.map +1 -1
- package/dist/ai-service/llm/context-v2/manager.d.ts +24 -3
- package/dist/ai-service/llm/context-v2/manager.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/manager.js +146 -4
- package/dist/ai-service/llm/context-v2/manager.js.map +1 -1
- package/dist/ai-service/llm/context-v2/migrations/v1-to-v2.d.ts +2 -7
- package/dist/ai-service/llm/context-v2/migrations/v1-to-v2.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/migrations/v1-to-v2.js +5 -73
- package/dist/ai-service/llm/context-v2/migrations/v1-to-v2.js.map +1 -1
- package/dist/ai-service/llm/context-v2/storage/event-store.d.ts +57 -0
- package/dist/ai-service/llm/context-v2/storage/event-store.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/storage/event-store.js +10 -0
- package/dist/ai-service/llm/context-v2/storage/event-store.js.map +1 -0
- package/dist/ai-service/llm/context-v2/storage/event-types.d.ts +50 -0
- package/dist/ai-service/llm/context-v2/storage/event-types.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/storage/event-types.js +10 -0
- package/dist/ai-service/llm/context-v2/storage/event-types.js.map +1 -0
- package/dist/ai-service/llm/context-v2/storage/jsonl-event-store.d.ts +87 -0
- package/dist/ai-service/llm/context-v2/storage/jsonl-event-store.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/storage/jsonl-event-store.js +184 -0
- package/dist/ai-service/llm/context-v2/storage/jsonl-event-store.js.map +1 -0
- package/dist/ai-service/llm/context-v2/storage/migration.d.ts +49 -0
- package/dist/ai-service/llm/context-v2/storage/migration.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/storage/migration.js +126 -0
- package/dist/ai-service/llm/context-v2/storage/migration.js.map +1 -0
- package/dist/ai-service/llm/context-v2/types.d.ts +16 -11
- package/dist/ai-service/llm/context-v2/types.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/types.js +2 -2
- package/dist/ai-service/llm/context-v2/types.js.map +1 -1
- package/dist/ai-service/llm/impl/clark.d.ts +8 -0
- package/dist/ai-service/llm/impl/clark.d.ts.map +1 -1
- package/dist/ai-service/llm/impl/clark.js +8 -0
- package/dist/ai-service/llm/impl/clark.js.map +1 -1
- package/dist/ai-service/llm/interaction/adapters/vercel.d.ts.map +1 -1
- package/dist/ai-service/llm/interaction/adapters/vercel.js +17 -1
- package/dist/ai-service/llm/interaction/adapters/vercel.js.map +1 -1
- package/dist/ai-service/llm/provider.d.ts.map +1 -1
- package/dist/ai-service/llm/provider.js +1 -3
- package/dist/ai-service/llm/provider.js.map +1 -1
- package/dist/ai-service/llm/stream/observers/context.d.ts +23 -0
- package/dist/ai-service/llm/stream/observers/context.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/observers/context.js +62 -0
- package/dist/ai-service/llm/stream/observers/context.js.map +1 -1
- package/dist/ai-service/llm/tool-context-integrity.d.ts +25 -0
- package/dist/ai-service/llm/tool-context-integrity.d.ts.map +1 -0
- package/dist/ai-service/llm/tool-context-integrity.js +141 -0
- package/dist/ai-service/llm/tool-context-integrity.js.map +1 -0
- package/dist/ai-service/skills/system/superblocks-migration/skill.generated.d.ts +1 -1
- package/dist/ai-service/skills/system/superblocks-migration/skill.generated.d.ts.map +1 -1
- package/dist/ai-service/skills/system/superblocks-migration/skill.generated.js +6 -1
- package/dist/ai-service/skills/system/superblocks-migration/skill.generated.js.map +1 -1
- package/dist/ai-service/skills/system/third-party-migration/skill.generated.d.ts +1 -1
- package/dist/ai-service/skills/system/third-party-migration/skill.generated.d.ts.map +1 -1
- package/dist/ai-service/skills/system/third-party-migration/skill.generated.js +3 -2
- package/dist/ai-service/skills/system/third-party-migration/skill.generated.js.map +1 -1
- package/dist/ai-service/state-machine/clark-fsm.d.ts +23 -2
- package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
- package/dist/ai-service/state-machine/clark-fsm.js +37 -2
- package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/agent-planning.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/agent-planning.js +29 -2
- package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/awaiting-user.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/awaiting-user.js +9 -0
- package/dist/ai-service/state-machine/handlers/awaiting-user.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/llm-generating.js +25 -2
- package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
- package/dist/ai-service/state-machine/helpers/fetch-with-reconnect-retry.d.ts +6 -0
- package/dist/ai-service/state-machine/helpers/fetch-with-reconnect-retry.d.ts.map +1 -0
- package/dist/ai-service/state-machine/helpers/fetch-with-reconnect-retry.js +36 -0
- package/dist/ai-service/state-machine/helpers/fetch-with-reconnect-retry.js.map +1 -0
- package/dist/ai-service/state-machine/helpers/stable-peer.d.ts +30 -1
- package/dist/ai-service/state-machine/helpers/stable-peer.d.ts.map +1 -1
- package/dist/ai-service/state-machine/helpers/stable-peer.js +85 -2
- package/dist/ai-service/state-machine/helpers/stable-peer.js.map +1 -1
- package/dist/ai-service/state-machine/helpers/user-preferences.d.ts +8 -0
- package/dist/ai-service/state-machine/helpers/user-preferences.d.ts.map +1 -0
- package/dist/ai-service/state-machine/helpers/user-preferences.js +11 -0
- package/dist/ai-service/state-machine/helpers/user-preferences.js.map +1 -0
- package/dist/ai-service/template-renderer.d.ts +18 -1
- package/dist/ai-service/template-renderer.d.ts.map +1 -1
- package/dist/ai-service/template-renderer.js +73 -12
- package/dist/ai-service/template-renderer.js.map +1 -1
- package/dist/ai-service/types.d.ts +157 -0
- package/dist/ai-service/types.d.ts.map +1 -1
- package/dist/ai-service/types.js +137 -0
- package/dist/ai-service/types.js.map +1 -1
- package/dist/ai-service/util/llm-config-utils.d.ts +21 -22
- package/dist/ai-service/util/llm-config-utils.d.ts.map +1 -1
- package/dist/ai-service/util/llm-config-utils.js +40 -67
- package/dist/ai-service/util/llm-config-utils.js.map +1 -1
- package/dist/file-sync-vite-plugin.d.ts.map +1 -1
- package/dist/file-sync-vite-plugin.js +5 -0
- package/dist/file-sync-vite-plugin.js.map +1 -1
- package/dist/file-system-helpers.d.ts +17 -0
- package/dist/file-system-helpers.d.ts.map +1 -1
- package/dist/file-system-helpers.js +22 -0
- package/dist/file-system-helpers.js.map +1 -1
- package/dist/git-service/index.d.ts.map +1 -1
- package/dist/git-service/index.js +15 -1
- package/dist/git-service/index.js.map +1 -1
- package/dist/migration/migration-routes.d.ts.map +1 -1
- package/dist/migration/migration-routes.js +26 -3
- package/dist/migration/migration-routes.js.map +1 -1
- package/dist/migration/translation-prompt.d.ts.map +1 -1
- package/dist/migration/translation-prompt.js +5 -0
- package/dist/migration/translation-prompt.js.map +1 -1
- package/dist/migration-templates/app-fullstack/package.json +2 -2
- package/dist/policy-gate-callback-mapper.d.ts +24 -0
- package/dist/policy-gate-callback-mapper.d.ts.map +1 -0
- package/dist/policy-gate-callback-mapper.js +61 -0
- package/dist/policy-gate-callback-mapper.js.map +1 -0
- package/dist/policy-gate-runner.d.ts +32 -0
- package/dist/policy-gate-runner.d.ts.map +1 -0
- package/dist/policy-gate-runner.js +191 -0
- package/dist/policy-gate-runner.js.map +1 -0
- package/dist/router-parser.d.ts.map +1 -1
- package/dist/router-parser.js +107 -11
- package/dist/router-parser.js.map +1 -1
- package/dist/sync-service/list-dir.d.ts.map +1 -1
- package/dist/sync-service/list-dir.js +13 -3
- package/dist/sync-service/list-dir.js.map +1 -1
- 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 @@
|
|
|
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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"}
|