Skip to content
中文

ContextSelector ​

SUPPORT · interface · Type contract

Model or local selector that chooses which reductions to apply.

Import ​

ts
import type { ContextSelector } from '@jangts/agent-core/support';
js
/** @typedef {import('@jangts/agent-core/support').ContextSelector} ContextSelector */

Other public entry points:@jangts/agent-core/support, @jangts/agent-core/support/context.

Definition ​

ts
interface ContextSelector

Field structure ​

FieldTypeRequiredDescription
idstringRequiredSee the type definition and usage context.
maxCallsnumber | undefinedOptionalMaximum model calls made through callModel, default 1; 0 permits a local selector.
select(call: ContextSelectionCall, context: ExecutionContext) => Promise<readonly string[]>RequiredReturns selected reduction ids; unknown ids are rejected.

Member index ​

MemberPurpose
selectReturns selected reduction ids; unknown ids are rejected.

Member details ​

select ​

Returns selected reduction ids; unknown ids are rejected.

ts
ContextSelector.select(call: ContextSelectionCall, context: ExecutionContext): Promise<readonly string[]>

Returns selected reduction ids; unknown ids are rejected.

ParameterTypePassingDescription
callContextSelectionCallRequired—
contextExecutionContextRequired—
Fields of call
FieldTypeRequiredDescription
stageIdstringRequiredRead-only. See the type definition and usage context.
candidatesreadonly ContextSelectionCandidate[]RequiredReducible candidates, already filtered and measured.
fragmentsreadonly ContextFragment[]RequiredOnly reducible fragments; never protected request or system fragments.
currentTokensnumber | undefinedOptionalCurrent input tokens, when a token budget applies.
requiredReductionTokensnumber | undefinedOptionalTokens that must be removed to satisfy the token budget.
currentCharsnumberRequiredSee the type definition and usage context.
requiredReductionCharsnumberRequiredCharacters that must be removed to satisfy the character budget.
remainingCallsnumberRequiredCalls the selector may still spend through callModel.
callModelContextModelCallRequiredSee the type definition and usage context.
Fields of context
FieldTypeRequiredDescription
loggerSubFlowLog | undefinedOptionalRead-only. Explicit optional recorder for this operation; never inferred from diagnostics.
signalAbortSignalRequiredRead-only. Non-optional cancellation signal; never undefined once execution has started.
diagnosticsDiagnosticContext | undefinedOptionalRead-only. Diagnostic scope of the enclosing call, when recording is enabled.

Returns: Promise<readonly string[]>.

Awaited value: readonly string[].

Examples ​

Bind a text compression handler ​

Beginner · Node.js

ts
import { Support } from '@jangts/agent-core';
const compressor = Support.createContextCompressor({
  id: 'history-summary', instruction: '保留事实、时间和未完成事项,精简重复表达。',
  transport: 'core:plain-text', maxOutputTokens: 500,
  parse(value: unknown) { if (typeof value !== 'string' || !value.trim()) throw new TypeError('需要非空摘要'); return value; },
});
console.log(compressor.id);
js
import { Support } from '@jangts/agent-core';
const compressor = Support.createContextCompressor({
    id: 'history-summary', instruction: '保留事实、时间和未完成事项,精简重复表达。',
    transport: 'core:plain-text', maxOutputTokens: 500,
    parse(value) { if (typeof value !== 'string' || !value.trim())
        throw new TypeError('需要非空摘要'); return value; },
});
console.log(compressor.id);

A selector explicitly controls the visible excerpt range ​

Configuration · Node.js

selector-json must be registered by the App and return value={stepIds:string[]}; an ordinary text transport must not be treated as already parsed JSON. This example only shows handler assembly and sends no request.

ts
import { Support } from '@jangts/agent-core';
const selector = Support.createContextSelector({ id: 'select-reduction',
  transport: 'selector-json', maxOutputTokens: 200, maxExcerptChars: 1000,
});
console.log(selector.id);
js
import { Support } from '@jangts/agent-core';
const selector = Support.createContextSelector({ id: 'select-reduction',
    transport: 'selector-json', maxOutputTokens: 200, maxExcerptChars: 1000,
});
console.log(selector.id);

API reference, usage examples and developer guides.