return undefined;
}
const multiplier = typeof billing.multiplier === 'number' ? billing.multiplier : undefined;
const priceCategory = typeof billing.priceCategory === 'string' ? billing.priceCategory
Frontier kind: Code frontier
unlabeled · c_6c32408e9bb7
168 tests · 42036 LOC · 249 files · introduces 0 tests · 14 LOC · 1 file
The orange circle is the focus. Violet and green circles are every ancestor and descendant, broader and narrower, at any distance; blue squares and pink diamonds are the introduced files and exact introduced tests of every visible concept, not only the focus's. Arrows point from broader to narrower concepts and bridge only concepts omitted from this view. Undirected links show source or test introduction. Concept and file size follows LOC; exact test nodes use test-count units.
Introduced files, introduced tests, and structurally relevant concept specialization
In the embedded map, ordinary wheel input scrolls the page; use the visible controls to zoom and drag to pan. Open the full-screen map for canvas navigation: wheel pans, Ctrl/Command plus wheel zooms, and arrow keys pan when this region is focused. On touch screens, open the full-screen map to pan or pinch. If JavaScript or WebGL is unavailable, use the native relationship evidence on this page.
Graph controls are ready.
Interactive rendering requires JavaScript and WebGL. Use the native relationship evidence on this page while the interactive map is unavailable.
Every exact file and test below is linked only from the concept that introduces it.
mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/claudeAgent.test|title=ClaudeAgent — Phase 11 customizations changeAgent on a peer chat persists to its overlay so a later resume picks it up|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/claudeAgent.test|title=ClaudeAgent — Phase 11 customizations chats.changeAgent on a peer persists to its overlay so a later resume picks it up (parity with legacy changeAgent)|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/copilotAgent.test|title=CopilotAgent contextSize to contextTier mapping maps the default numeric context size to default|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/copilotAgent.test|title=CopilotAgent contextSize to contextTier mapping maps the largest numeric context size to long_context|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/claudeAgent.test|title=ClaudeAgent — Phase 11 customizations changeAgent on a materialized session triggers a rebind with the new Options.agent on the rebuilt Query|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/claudeAgent.test|title=ClaudeAgent — Phase 11 customizations changeAgent(undefined) clears the selection: rebind, Options.agent omitted|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/claudeAgent.test|title=ClaudeAgent — Phase 11 customizations chats.fork forks the source chat; chats.sendMessage resumes the peer chat's own forked SDK session|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/claudeAgent.test|title=ClaudeAgent — Phase 11 customizations createChat({ fork }) forks the source chat; the peer chat resumes its own forked SDK session|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/claudeAgent.test|title=ClaudeAgent — Phase 11 customizations sendMessage to a peer chat targets a chat distinct from the parent session|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/claudeAgent.test|title=ClaudeAgent multiple text blocks each get a distinct partId; deltas route correctly|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/claudeAgent.test|title=ClaudeAgent text content_block emits ChatResponsePart(Markdown) before ChatDelta|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/claudeAgent.test|title=ClaudeAgent (Phase 9 — runtime mutation surface) intermediate result during steering does NOT complete the in-flight sendMessage or fire ChatTurnComplete|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/claudeAgent.test|title=ClaudeAgent (Phase 9 — runtime mutation surface) intermediate result during steering does NOT settle the original sendMessage promise (regression for C1)|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/claudeAgent.test|title=ClaudeAgent (Phase 8 — file edit tracking via SDK message stream) Options carries enableFileCheckpointing on and no SDK hooks (file-edit tracking is observed off the message stream, not via user-bypassable hooks)|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/claudeAgent.test|title=ClaudeAgent (Phase 8 — file edit tracking via SDK message stream) Options carries forwardSubagentText: true so live subagent text + thinking flow through (Phase 12 step 1)|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/claudeAgent.test|title=ClaudeAgent first sendMessage on a provisional session materializes it (single startup, single materialize event)|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/claudeAgent.test|title=ClaudeAgent materialize event payload shape — { session, workingDirectory, project: undefined }|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/claudeAgent.test|title=ClaudeAgent result emits ChatUsage immediately before ChatTurnComplete|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/claudeAgent.test|title=ClaudeAgent sendMessage tags SDKUserMessage.uuid with the effective turn id (M1 / Turn.id ↔ uuid invariant)|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/claudeAgent.test|title=ClaudeAgent — Phase 11 customizations changeModel on a peer chat fires onDidChangeChatData with the refreshed providerData|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/claudeAgent.test|title=ClaudeAgent — Phase 11 customizations chats.changeModel on a peer fires onDidChangeChatData with the refreshed providerData (parity with legacy changeModel)|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/claudeAgent.test|title=ClaudeAgent clears models when enumeration for a replacement token fails|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/claudeAgent.test|title=ClaudeAgent keeps the last known-good models when a periodic refresh fails|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/claudeAgent.test|title=ClaudeAgent authenticate populates models filtered to Claude family|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/claudeAgent.test|title=ClaudeAgent authenticate surfaces the CAPI chat-default model first; ties preserve insertion order|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/claudeAgent.test|title=ClaudeAgent model filter excludes non-Claude entries|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/lifecycle.test|title=Lifecycle Action bar has broken accessibility #100273|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/lifecycle.test|title=Lifecycle dispose disposable array|occurrence=1Every collected test enters the hierarchy at exactly one concept.
No tests are introduced at this concept. Its intent tests are introduced by other concepts.
Every collected source range enters the hierarchy at exactly one concept.
1 file ranked by introduced lines: 14 introduced LOC across 6 ranges. Expand a file to inspect source; the > gutter marks introduced lines.
return undefined;
}
const multiplier = typeof billing.multiplier === 'number' ? billing.multiplier : undefined;
const priceCategory = typeof billing.priceCategory === 'string' ? billing.priceCategory
: undefined;
const discountPercent = typeof billing.discountPercent === 'number' ? billing.discountPercent
: typeof (billing as Record<string, unknown>).discount_percent === 'number' ? (billing as Record<string, unknown>).discount_percent as number
agentModelPricing.ts
: undefined;
// Resolve token prices: prefer camelCase `tokenPrices`, fall back to snake_case `token_prices`.
tokenPrices = { inputPrice, cachePrice, cacheWritePrice, outputPrice, contextMax, longContext };
}
return { multiplier, priceCategory, discountPercent, promo: normalizePromo(billing), tokenPrices };
}
function asNumber(v: unknown): number | undefined {
}
function normalizePromo(billing: Record<string, unknown>): ICAPIModelBilling['promo'] {
agentModelPricing.ts
const raw = billing.promo as Record<string, unknown> | undefined;
if (!raw || typeof raw !== 'object') {
return undefined;
}
const discountPercent = asNumber(raw.discountPercent) ?? asNumber(raw.discount_percent);
const endsAt = typeof raw.endsAt === 'string' ? raw.endsAt
: typeof raw.ends_at === 'string' ? raw.ends_at
: undefined;
const message = typeof raw.message === 'string' ? raw.message : undefined;
agentModelPricing.ts
if (id && typeof discountPercent === 'number' && endsAt && message) {
return { id, discountPercent, endsAt, message };
}