assembleContextPlan
CORE · function · Runtime value
Build the model input for a context plan.
Import
ts
import { assembleContextPlan } from '@jangts/agent-core/context';js
import { assembleContextPlan } from '@jangts/agent-core/context';Other public entry points:@jangts/agent-core, @jangts/agent-core/types, @jangts/agent-core/context.
Definition
Call
ts
assembleContextPlan(plan: ContextPlan): BuiltContextBuild the model input for a context plan.
| Parameter | Type | Passing | Description |
|---|---|---|---|
plan | ContextPlan | Required | — |
Fields of plan
| Field | Type | Required | Description |
|---|---|---|---|
fragments | readonly ContextFragment[] | Required | Read-only. Fragments in the order supplied by the App; assembly preserves it. |
maxInputChars | number | Required | Character budget Core validates after assembly. |
additionalMessages | readonly (ModelMessage & { role: "user"; })[] | undefined | Optional | Protected user messages (for example image inputs); text counts toward the same budget. |
originalFragments | readonly ContextFragment[] | undefined | Optional | Trusted originals for structural mutation auditing; never sent to the model. |
mutableFragmentIds | readonly string[] | undefined | Optional | Explicit value-mutation allowance when originals are supplied. |
Returns: BuiltContext.
Return value structure
| Field | Type | Required | Description |
|---|---|---|---|
messages | ModelMessage[] | Required | Messages in final model order. |
fragmentUsage | ContextFragmentUsage[] | Required | Per-fragment accounting in the same order as the fragments were merged. |
inputChars | number | Required | Total counted characters across messages and usage. |
maxInputChars | number | Required | Budget the assembly was validated against; Infinity means unbounded. |
Examples
- Context fragments: explicit source, trust, and budget: Core recognizes fragments and the assembly contract, validates source metadata and budgets, and has no built-in business compression algorithm.
Assemble one input from bare configuration
Beginner · Node.js
ts
import { assembleFragments } from '@jangts/agent-core/context';
const input = assembleFragments([{ id: 'question', sourceId: 'request', trust: 'user',
lifetime: 'turn', maxChars: 1000, role: 'user', value: '现在服务状态怎样?' }], 2000);
console.log(input.messages, input.fragmentUsage);js
import { assembleFragments } from '@jangts/agent-core/context';
const input = assembleFragments([{ id: 'question', sourceId: 'request', trust: 'user',
lifetime: 'turn', maxChars: 1000, role: 'user', value: '现在服务状态怎样?' }], 2000);
console.log(input.messages, input.fragmentUsage);Add a candidate plan and final audit
Configuration · Node.js
An empty mutable fragment list means the original fragments may not be modified; no compression step is authorized automatically.
ts
import { assembleContextPlan } from '@jangts/agent-core/context';
import type { ContextFragment } from '@jangts/agent-core/types';
const fragments: ContextFragment[] = [{ id: 'question', sourceId: 'request', trust: 'user',
lifetime: 'turn', maxChars: 1000, role: 'user', value: '现在服务状态怎样?' }];
const input = assembleContextPlan({ fragments, originalFragments: fragments, mutableFragmentIds: [], maxInputChars: 2000 });
console.log(input.inputChars);js
import { assembleContextPlan } from '@jangts/agent-core/context';
const fragments = [{ id: 'question', sourceId: 'request', trust: 'user',
lifetime: 'turn', maxChars: 1000, role: 'user', value: '现在服务状态怎样?' }];
const input = assembleContextPlan({ fragments, originalFragments: fragments, mutableFragmentIds: [], maxInputChars: 2000 });
console.log(input.inputChars);