From e9ec3f93c43f8a952c25344ee3f1783e713b4355 Mon Sep 17 00:00:00 2001 From: TianYi <2739022972@qq.com> Date: Mon, 22 Jun 2026 23:01:45 +0800 Subject: [PATCH] feat: change context file --- src/context/{ => budget}/context-budget.ts | 2 +- src/context/{ => budget}/priority-policy.ts | 2 +- src/context/{ => budget}/token-estimator.ts | 0 .../context-compression-pipeline.ts | 9 +++-- .../{ => compression}/context-compressor.ts | 7 +++- .../{ => compression}/context-truncator.ts | 11 ++++-- src/context/{ => engine}/context-builder.ts | 2 +- src/context/{ => engine}/context-engine.ts | 23 +++++++----- src/context/{ => engine}/context-registry.ts | 4 +- .../{ => formatting}/context-formatter.ts | 4 +- .../system-prompt-assembler.ts | 0 src/context/index.ts | 37 ++++++++++--------- src/context/types.ts | 14 +++---- 13 files changed, 65 insertions(+), 50 deletions(-) rename src/context/{ => budget}/context-budget.ts (97%) rename src/context/{ => budget}/priority-policy.ts (93%) rename src/context/{ => budget}/token-estimator.ts (100%) rename src/context/{ => compression}/context-compression-pipeline.ts (93%) rename src/context/{ => compression}/context-compressor.ts (99%) rename src/context/{ => compression}/context-truncator.ts (95%) rename src/context/{ => engine}/context-builder.ts (80%) rename src/context/{ => engine}/context-engine.ts (81%) rename src/context/{ => engine}/context-registry.ts (92%) rename src/context/{ => formatting}/context-formatter.ts (81%) rename src/context/{ => formatting}/system-prompt-assembler.ts (100%) diff --git a/src/context/context-budget.ts b/src/context/budget/context-budget.ts similarity index 97% rename from src/context/context-budget.ts rename to src/context/budget/context-budget.ts index 62179f2..d75635e 100644 --- a/src/context/context-budget.ts +++ b/src/context/budget/context-budget.ts @@ -1,4 +1,4 @@ -import type {BuildContextInput, ContextBudget} from "./types.js"; +import type {BuildContextInput, ContextBudget} from "../types.js"; /** Strategy used to derive runtime context budget from build input. */ export interface ContextBudgetPolicy { diff --git a/src/context/priority-policy.ts b/src/context/budget/priority-policy.ts similarity index 93% rename from src/context/priority-policy.ts rename to src/context/budget/priority-policy.ts index c17e956..3f3cf23 100644 --- a/src/context/priority-policy.ts +++ b/src/context/budget/priority-policy.ts @@ -1,4 +1,4 @@ -import type {ContextSection, ContextSource} from "./types.js"; +import type {ContextSection, ContextSource} from "../types.js"; /** Strategy used to order context sections. */ export interface ContextPriorityPolicy { diff --git a/src/context/token-estimator.ts b/src/context/budget/token-estimator.ts similarity index 100% rename from src/context/token-estimator.ts rename to src/context/budget/token-estimator.ts diff --git a/src/context/context-compression-pipeline.ts b/src/context/compression/context-compression-pipeline.ts similarity index 93% rename from src/context/context-compression-pipeline.ts rename to src/context/compression/context-compression-pipeline.ts index 9bac7fb..935e624 100644 --- a/src/context/context-compression-pipeline.ts +++ b/src/context/compression/context-compression-pipeline.ts @@ -3,9 +3,12 @@ import { NoopContextCompressor, type ContextCompressor, } from "./context-compressor.js"; -import {formatContextSection} from "./context-formatter.js"; -import {createDefaultTokenEstimator, type TokenEstimator} from "./token-estimator.js"; -import type {ContextBudget, ContextCompressionResult, ContextSection} from "./types.js"; +import { + createDefaultTokenEstimator, + type TokenEstimator, +} from "../budget/token-estimator.js"; +import {formatContextSection} from "../formatting/context-formatter.js"; +import type {ContextBudget, ContextCompressionResult, ContextSection} from "../types.js"; export type ContextCompressionPipelineOptions = { compressor?: ContextCompressor; diff --git a/src/context/context-compressor.ts b/src/context/compression/context-compressor.ts similarity index 99% rename from src/context/context-compressor.ts rename to src/context/compression/context-compressor.ts index 90ddc5d..c6fe3a2 100644 --- a/src/context/context-compressor.ts +++ b/src/context/compression/context-compressor.ts @@ -1,5 +1,8 @@ -import {createDefaultTokenEstimator, type TokenEstimator} from "./token-estimator.js"; -import type {ContextBudget, ContextCompressionResult, ContextSection} from "./types.js"; +import { + createDefaultTokenEstimator, + type TokenEstimator, +} from "../budget/token-estimator.js"; +import type {ContextBudget, ContextCompressionResult, ContextSection} from "../types.js"; export type ContextCompressionMetadata = { strategy?: string; diff --git a/src/context/context-truncator.ts b/src/context/compression/context-truncator.ts similarity index 95% rename from src/context/context-truncator.ts rename to src/context/compression/context-truncator.ts index 7ba066d..dcb5927 100644 --- a/src/context/context-truncator.ts +++ b/src/context/compression/context-truncator.ts @@ -1,7 +1,10 @@ -import {DefaultContextBudgetPolicy} from "./context-budget.js"; -import {formatContextSection} from "./context-formatter.js"; -import {createDefaultTokenEstimator, type TokenEstimator} from "./token-estimator.js"; -import type {ContextBudget, ContextSection, ContextSectionUsage} from "./types.js"; +import {DefaultContextBudgetPolicy} from "../budget/context-budget.js"; +import { + createDefaultTokenEstimator, + type TokenEstimator, +} from "../budget/token-estimator.js"; +import {formatContextSection} from "../formatting/context-formatter.js"; +import type {ContextBudget, ContextSection, ContextSectionUsage} from "../types.js"; export type FormattedContextSection = { section: ContextSection; diff --git a/src/context/context-builder.ts b/src/context/engine/context-builder.ts similarity index 80% rename from src/context/context-builder.ts rename to src/context/engine/context-builder.ts index 6df4489..2028af5 100644 --- a/src/context/context-builder.ts +++ b/src/context/engine/context-builder.ts @@ -1,5 +1,5 @@ import {ContextEngine} from "./context-engine.js"; -import type {BuildContextInput, BuildContextResult} from "./types.js"; +import type {BuildContextInput, BuildContextResult} from "../types.js"; const defaultContextEngine = new ContextEngine(); diff --git a/src/context/context-engine.ts b/src/context/engine/context-engine.ts similarity index 81% rename from src/context/context-engine.ts rename to src/context/engine/context-engine.ts index 25fb09a..e40bbcb 100644 --- a/src/context/context-engine.ts +++ b/src/context/engine/context-engine.ts @@ -1,17 +1,20 @@ -import {ContextCompressionPipeline} from "./context-compression-pipeline.js"; -import {DefaultContextBudgetPolicy} from "./context-budget.js"; -import {ContextRegistry} from "./context-registry.js"; -import {ContextTruncator} from "./context-truncator.js"; -import {DefaultContextPriorityPolicy} from "./priority-policy.js"; -import {SystemPromptAssembler} from "./system-prompt-assembler.js"; -import {createDefaultTokenEstimator, type TokenEstimator} from "./token-estimator.js"; -import type {ContextBudgetPolicy} from "./context-budget.js"; -import type {ContextPriorityPolicy} from "./priority-policy.js"; +import {DefaultContextBudgetPolicy} from "../budget/context-budget.js"; +import {DefaultContextPriorityPolicy} from "../budget/priority-policy.js"; +import { + createDefaultTokenEstimator, + type TokenEstimator, +} from "../budget/token-estimator.js"; +import {ContextCompressionPipeline} from "../compression/context-compression-pipeline.js"; +import {ContextTruncator} from "../compression/context-truncator.js"; +import {SystemPromptAssembler} from "../formatting/system-prompt-assembler.js"; +import type {ContextBudgetPolicy} from "../budget/context-budget.js"; +import type {ContextPriorityPolicy} from "../budget/priority-policy.js"; import type { BuildContextInput, BuildContextResult, ContextEngineOptions, -} from "./types.js"; +} from "../types.js"; +import {ContextRegistry} from "./context-registry.js"; /** Class-based context engine that owns the full runtime context pipeline. */ export class ContextEngine { diff --git a/src/context/context-registry.ts b/src/context/engine/context-registry.ts similarity index 92% rename from src/context/context-registry.ts rename to src/context/engine/context-registry.ts index e21795f..258e4b0 100644 --- a/src/context/context-registry.ts +++ b/src/context/engine/context-registry.ts @@ -1,5 +1,5 @@ -import type {ContextPriorityPolicy} from "./priority-policy.js"; -import type {ContextSection} from "./types.js"; +import type {ContextPriorityPolicy} from "../budget/priority-policy.js"; +import type {ContextSection} from "../types.js"; /** Mutable registry for normalizing, deduping, and ordering context sections. */ export class ContextRegistry { diff --git a/src/context/context-formatter.ts b/src/context/formatting/context-formatter.ts similarity index 81% rename from src/context/context-formatter.ts rename to src/context/formatting/context-formatter.ts index c9c7aff..7c74a7f 100644 --- a/src/context/context-formatter.ts +++ b/src/context/formatting/context-formatter.ts @@ -1,5 +1,5 @@ -import type {ContextSection} from "./types.js"; -import {DefaultContextPriorityPolicy} from "./priority-policy.js"; +import {DefaultContextPriorityPolicy} from "../budget/priority-policy.js"; +import type {ContextSection} from "../types.js"; /** Returns a formatted section string, or an empty string for blank content. */ export function formatContextSection(section: ContextSection): string { diff --git a/src/context/system-prompt-assembler.ts b/src/context/formatting/system-prompt-assembler.ts similarity index 100% rename from src/context/system-prompt-assembler.ts rename to src/context/formatting/system-prompt-assembler.ts diff --git a/src/context/index.ts b/src/context/index.ts index f39ae53..1c8dde1 100644 --- a/src/context/index.ts +++ b/src/context/index.ts @@ -1,45 +1,48 @@ -export {ContextEngine} from "./context-engine.js"; -export {buildRuntimeContext} from "./context-builder.js"; -export {ContextCompressionPipeline} from "./context-compression-pipeline.js"; +export {ContextEngine} from "./engine/context-engine.js"; +export {buildRuntimeContext} from "./engine/context-builder.js"; +export {ContextRegistry} from "./engine/context-registry.js"; +export {ContextCompressionPipeline} from "./compression/context-compression-pipeline.js"; export type { ContextCompressionPipelineOptions, ContextCompressionPipelineResult, -} from "./context-compression-pipeline.js"; -export {DefaultContextBudgetPolicy} from "./context-budget.js"; -export type {ContextBudgetPolicy} from "./context-budget.js"; +} from "./compression/context-compression-pipeline.js"; +export {DefaultContextBudgetPolicy} from "./budget/context-budget.js"; +export type {ContextBudgetPolicy} from "./budget/context-budget.js"; export { ContextCompressionResultFactory, createCompressionResult, isCompressibleSection, NoopContextCompressor, RuleBasedContextCompressor, -} from "./context-compressor.js"; +} from "./compression/context-compressor.js"; export type { ContextCompressor, ContextCompressionMetadata, RuleBasedContextCompressorOptions, -} from "./context-compressor.js"; -export {compareContextSection, formatContextSection} from "./context-formatter.js"; -export {ContextRegistry} from "./context-registry.js"; +} from "./compression/context-compressor.js"; +export { + compareContextSection, + formatContextSection, +} from "./formatting/context-formatter.js"; export { ContextTruncator, truncateContext, truncateTextToTokens, -} from "./context-truncator.js"; +} from "./compression/context-truncator.js"; export type { FormattedContextSection, TruncateContextResult, -} from "./context-truncator.js"; -export {DefaultContextPriorityPolicy} from "./priority-policy.js"; -export type {ContextPriorityPolicy} from "./priority-policy.js"; -export {SystemPromptAssembler} from "./system-prompt-assembler.js"; +} from "./compression/context-truncator.js"; +export {DefaultContextPriorityPolicy} from "./budget/priority-policy.js"; +export type {ContextPriorityPolicy} from "./budget/priority-policy.js"; +export {SystemPromptAssembler} from "./formatting/system-prompt-assembler.js"; export { ApproxTokenEstimator, createDefaultTokenEstimator, estimateTokens, GptTokenEstimator, -} from "./token-estimator.js"; -export type {TokenCountableMessage, TokenEstimator} from "./token-estimator.js"; +} from "./budget/token-estimator.js"; +export type {TokenCountableMessage, TokenEstimator} from "./budget/token-estimator.js"; export type { BuildContextInput, BuildContextDiagnostics, diff --git a/src/context/types.ts b/src/context/types.ts index 8e1f5b7..7167c21 100644 --- a/src/context/types.ts +++ b/src/context/types.ts @@ -1,10 +1,10 @@ -import type {ContextCompressionPipeline} from "./context-compression-pipeline.js"; -import type {ContextBudgetPolicy} from "./context-budget.js"; -import type {ContextCompressor} from "./context-compressor.js"; -import type {ContextTruncator} from "./context-truncator.js"; -import type {ContextPriorityPolicy} from "./priority-policy.js"; -import type {SystemPromptAssembler} from "./system-prompt-assembler.js"; -import type {TokenEstimator} from "./token-estimator.js"; +import type {ContextBudgetPolicy} from "./budget/context-budget.js"; +import type {ContextPriorityPolicy} from "./budget/priority-policy.js"; +import type {TokenEstimator} from "./budget/token-estimator.js"; +import type {ContextCompressionPipeline} from "./compression/context-compression-pipeline.js"; +import type {ContextCompressor} from "./compression/context-compressor.js"; +import type {ContextTruncator} from "./compression/context-truncator.js"; +import type {SystemPromptAssembler} from "./formatting/system-prompt-assembler.js"; /** Source metadata for a context section. */ export type ContextSource =