@cortexkit/pi-magic-context 0.43.1 → 0.44.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.
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getHarness,
3
3
  log
4
- } from "./index-bfd52y8p.js";
4
+ } from "./index-tfzybajk.js";
5
5
 
6
6
  // ../plugin/src/features/magic-context/reclaim-protection.ts
7
7
  var CTX_REDUCE_KEEP = 3;
@@ -1009,7 +1009,7 @@ function buildChannel2Reminder(undroppedTokens, reclaimableToolOutputs, hint) {
1009
1009
  const summary = formatReclaimableOutputSummary(reclaimableToolOutputs, undroppedTokens);
1010
1010
  const hintText = formatOldestReclaimableHint(hint);
1011
1011
  return `<system-reminder>
1012
- ` + `Routine housekeeping: ${summary} are reclaimable — make a ctx_reduce pass at a natural stopping point.${hintText}
1012
+ ` + `Your next step: call ctx_reduce on the outputs you've already used (${summary}). Then continue your task.${hintText}
1013
1013
  ` + `</system-reminder>`;
1014
1014
  }
1015
1015
  var CHANNEL1_STICKY_REAL_USER_TURN_GAP = 5;
@@ -1020,19 +1020,19 @@ function buildChannel1Reminder(level, undroppedTokens, reclaimableToolOutputs, h
1020
1020
  return `
1021
1021
 
1022
1022
  <system-reminder>
1023
- Reminder: ${summary} are still reclaimable — ctx_reduce them at a natural stopping point.${hintText}
1023
+ Still unstamped: ${summary}. Stamp the ones you've used with ctx_reduce now.${hintText}
1024
1024
  </system-reminder>`;
1025
1025
  }
1026
1026
  let body;
1027
1027
  switch (level) {
1028
1028
  case "gentle":
1029
- body = `Housekeeping: ${summary} are reclaimable — drop the ones you have already processed with ctx_reduce at a natural stopping point.`;
1029
+ body = `Housekeeping: ${summary} are reclaimable. Stamp each output with ctx_reduce as soon as you've taken what you need from it; don't wait for the task to finish.`;
1030
1030
  break;
1031
1031
  case "firm":
1032
- body = `Housekeeping: ${summary} are reclaimable — make a ctx_reduce pass at a natural stopping point.`;
1032
+ body = `${summary} are reclaimable. Make a ctx_reduce pass now over the outputs you've already used, then continue.`;
1033
1033
  break;
1034
1034
  case "urgent":
1035
- body = `Housekeeping backlog: ${summary} are reclaimable — a ctx_reduce pass is due.`;
1035
+ body = `${summary} are still unstamped. Call ctx_reduce now, before your next tool call, on every output you've already used.`;
1036
1036
  break;
1037
1037
  }
1038
1038
  return `
@@ -1490,7 +1490,7 @@ function toTagEntry(row) {
1490
1490
  messageId: row.message_id,
1491
1491
  type,
1492
1492
  status,
1493
- dropMode: row.drop_mode === "truncated" ? "truncated" : row.drop_mode === "edit_marker" ? "edit_marker" : "full",
1493
+ dropMode: row.drop_mode === "truncated" ? "truncated" : row.drop_mode === "skeleton_real" ? "skeleton_real" : row.drop_mode === "skeleton_stripped" ? "skeleton_stripped" : row.drop_mode === "edit_marker" ? "edit_marker" : row.drop_mode === "edit_marker_stripped" ? "edit_marker_stripped" : "full",
1494
1494
  toolName: row.tool_name ?? null,
1495
1495
  inputByteSize: row.input_byte_size ?? 0,
1496
1496
  byteSize: row.byte_size,
@@ -1641,8 +1641,22 @@ function getPiFallbackMessageFoldTagRowsByMessageId(db, sessionId, messageId) {
1641
1641
  AND type = 'message'
1642
1642
  ORDER BY tag_number ASC`).all(sessionId, messageId).filter(isPiFallbackFoldTagRow);
1643
1643
  }
1644
+ var foldStatements = new WeakMap;
1645
+ function foldStatement(db, sql) {
1646
+ let statements = foldStatements.get(db);
1647
+ if (!statements) {
1648
+ statements = new Map;
1649
+ foldStatements.set(db, statements);
1650
+ }
1651
+ let statement = statements.get(sql);
1652
+ if (!statement) {
1653
+ statement = db.prepare(sql);
1654
+ statements.set(sql, statement);
1655
+ }
1656
+ return statement;
1657
+ }
1644
1658
  function mergeSizeAndTokenColumnsIntoSurvivor(db, sessionId, survivor, duplicate) {
1645
- db.prepare(`UPDATE tags
1659
+ foldStatement(db, `UPDATE tags
1646
1660
  SET byte_size = ?,
1647
1661
  reasoning_byte_size = ?,
1648
1662
  input_byte_size = ?,
@@ -1662,36 +1676,38 @@ function applyDroppedStatusIfNeeded(db, sessionId, survivor, duplicate) {
1662
1676
  return;
1663
1677
  if (duplicate.status !== "dropped")
1664
1678
  return;
1665
- db.prepare("UPDATE tags SET status = 'dropped' WHERE session_id = ? AND tag_number = ?").run(sessionId, survivor.tagNumber);
1679
+ foldStatement(db, "UPDATE tags SET status = 'dropped' WHERE session_id = ? AND tag_number = ?").run(sessionId, survivor.tagNumber);
1666
1680
  survivor.status = "dropped";
1667
1681
  }
1668
1682
  function retargetPendingOps(db, sessionId, fromTagNumber, toTagNumber) {
1669
- const rows = db.prepare(`SELECT id, operation
1670
- FROM pending_ops
1671
- WHERE session_id = ? AND tag_id = ?
1672
- ORDER BY id ASC`).all(sessionId, fromTagNumber).filter(isPendingOpIdentityRow);
1683
+ const rows = foldStatement(db, `SELECT id, operation
1684
+ FROM pending_ops
1685
+ WHERE session_id = ? AND tag_id = ?
1686
+ ORDER BY id ASC`).all(sessionId, fromTagNumber).filter(isPendingOpIdentityRow);
1673
1687
  for (const row of rows) {
1674
- const existing = db.prepare(`SELECT 1
1675
- FROM pending_ops
1676
- WHERE session_id = ? AND tag_id = ? AND operation = ?
1677
- LIMIT 1`).get(sessionId, toTagNumber, row.operation);
1688
+ const existing = foldStatement(db, `SELECT 1
1689
+ FROM pending_ops
1690
+ WHERE session_id = ? AND tag_id = ? AND operation = ?
1691
+ LIMIT 1`).get(sessionId, toTagNumber, row.operation);
1678
1692
  if (existing) {
1679
- db.prepare("DELETE FROM pending_ops WHERE session_id = ? AND id = ?").run(sessionId, row.id);
1693
+ foldStatement(db, "DELETE FROM pending_ops WHERE session_id = ? AND id = ?").run(sessionId, row.id);
1680
1694
  } else {
1681
- db.prepare("UPDATE pending_ops SET tag_id = ? WHERE session_id = ? AND id = ?").run(toTagNumber, sessionId, row.id);
1695
+ foldStatement(db, "UPDATE pending_ops SET tag_id = ? WHERE session_id = ? AND id = ?").run(toTagNumber, sessionId, row.id);
1682
1696
  }
1683
1697
  }
1684
- db.prepare("DELETE FROM pending_ops WHERE session_id = ? AND tag_id = ?").run(sessionId, fromTagNumber);
1698
+ foldStatement(db, "DELETE FROM pending_ops WHERE session_id = ? AND tag_id = ?").run(sessionId, fromTagNumber);
1685
1699
  }
1686
1700
  function deleteFoldedDuplicateTag(db, sessionId, tagNumber) {
1687
- db.prepare("DELETE FROM source_contents WHERE session_id = ? AND tag_id = ?").run(sessionId, tagNumber);
1688
- db.prepare("DELETE FROM tags WHERE session_id = ? AND tag_number = ?").run(sessionId, tagNumber);
1689
- db.prepare("DELETE FROM pending_ops WHERE session_id = ? AND tag_id = ?").run(sessionId, tagNumber);
1701
+ foldStatement(db, "DELETE FROM source_contents WHERE session_id = ? AND tag_id = ?").run(sessionId, tagNumber);
1702
+ foldStatement(db, "DELETE FROM tags WHERE session_id = ? AND tag_number = ?").run(sessionId, tagNumber);
1703
+ foldStatement(db, "DELETE FROM pending_ops WHERE session_id = ? AND tag_id = ?").run(sessionId, tagNumber);
1690
1704
  }
1691
- function foldDuplicateIntoSurvivor(db, sessionId, survivor, duplicate) {
1705
+ function foldDuplicateIntoSurvivor(db, sessionId, survivor, duplicate, duplicateMayHaveQueuedOps = true) {
1692
1706
  mergeSizeAndTokenColumnsIntoSurvivor(db, sessionId, survivor, duplicate);
1693
1707
  applyDroppedStatusIfNeeded(db, sessionId, survivor, duplicate);
1694
- retargetPendingOps(db, sessionId, duplicate.tagNumber, survivor.tagNumber);
1708
+ if (duplicateMayHaveQueuedOps) {
1709
+ retargetPendingOps(db, sessionId, duplicate.tagNumber, survivor.tagNumber);
1710
+ }
1695
1711
  deleteFoldedDuplicateTag(db, sessionId, duplicate.tagNumber);
1696
1712
  }
1697
1713
  function hasPiFallbackToolOwnerTags(db, sessionId) {
@@ -2042,7 +2058,7 @@ function retreatPastHostUnservedRows(messages, exclusiveEnd, floor) {
2042
2058
  // ../plugin/src/shared/opencode-db-path.ts
2043
2059
  import { existsSync as existsSync2, readdirSync, statSync as statSync2 } from "node:fs";
2044
2060
  import { homedir as homedir2 } from "node:os";
2045
- import { isAbsolute, join as join2 } from "node:path";
2061
+ import { isAbsolute, join as join2, resolve as resolve2 } from "node:path";
2046
2062
  var cachedResolution = null;
2047
2063
  var lastReadFailure = null;
2048
2064
  var claimedDiagnostics = new Set;
@@ -2125,7 +2141,7 @@ function resolveV2Fresh(dataDir, channel, env) {
2125
2141
  const filename = sourceOpenCodeDatabaseFilename("v2", channel, env);
2126
2142
  const explicit = env.OPENCODE_DB !== undefined;
2127
2143
  return {
2128
- path: filename === ":memory:" ? filename : join2(dataDir, filename),
2144
+ path: filename === ":memory:" ? filename : resolve2(dataDir, filename),
2129
2145
  source: explicit ? "OPENCODE_DB" : env.OPENCODE_CHANNEL ? "channel" : "default",
2130
2146
  channel: explicit ? null : channel
2131
2147
  };
@@ -2717,6 +2733,34 @@ function readRawSessionTailFromDb(db, sessionId, baseOrdinal, anchorMessageId) {
2717
2733
  }
2718
2734
  return { messages, absoluteMessageCount: Math.max(0, ord - 1) };
2719
2735
  }
2736
+ function readRawSessionMessageOrdinalByIdFromDb(db, sessionId, messageId) {
2737
+ const row = db.prepare(`SELECT COUNT(candidate.id) AS ordinal
2738
+ FROM message AS target
2739
+ JOIN message AS candidate
2740
+ ON candidate.session_id = target.session_id
2741
+ AND NOT (
2742
+ CASE WHEN json_valid(candidate.data) = 1
2743
+ THEN COALESCE(json_extract(candidate.data, '$.summary'), 0)
2744
+ ELSE 0 END = 1
2745
+ AND CASE WHEN json_valid(candidate.data) = 1
2746
+ THEN COALESCE(json_extract(candidate.data, '$.finish'), '')
2747
+ ELSE '' END = 'stop'
2748
+ )
2749
+ AND (candidate.time_created < target.time_created
2750
+ OR (candidate.time_created = target.time_created AND candidate.id <= target.id))
2751
+ WHERE target.session_id = ?
2752
+ AND target.id = ?
2753
+ AND NOT (
2754
+ CASE WHEN json_valid(target.data) = 1
2755
+ THEN COALESCE(json_extract(target.data, '$.summary'), 0)
2756
+ ELSE 0 END = 1
2757
+ AND CASE WHEN json_valid(target.data) = 1
2758
+ THEN COALESCE(json_extract(target.data, '$.finish'), '')
2759
+ ELSE '' END = 'stop'
2760
+ )`).get(sessionId, messageId);
2761
+ const ordinal = row?.ordinal;
2762
+ return typeof ordinal === "number" && ordinal > 0 ? ordinal : null;
2763
+ }
2720
2764
  function readRawSessionMessageByIdFromDb(db, sessionId, messageId) {
2721
2765
  const row = db.prepare("SELECT id, data, time_created, time_updated FROM message WHERE session_id = ? AND id = ?").get(sessionId, messageId);
2722
2766
  if (!row || !isRawMessageRow(row) || typeof row.time_created !== "number") {
@@ -4002,6 +4046,28 @@ function historyLocalBudget(providerTokens, modelKey) {
4002
4046
  return ratio === 1 ? providerTokens : localBudget(providerTokens, ratio);
4003
4047
  }
4004
4048
 
4049
+ // ../plugin/src/hooks/magic-context/tool-input-size.ts
4050
+ var SKELETON_REAL_INPUT_MAX_BYTES = 1024;
4051
+ var encoder2 = new TextEncoder;
4052
+ function toolInputStringBytes(value) {
4053
+ const seen = new WeakSet;
4054
+ const visit = (candidate) => {
4055
+ if (typeof candidate === "string")
4056
+ return encoder2.encode(candidate).length;
4057
+ if (candidate === null || typeof candidate !== "object")
4058
+ return 0;
4059
+ if (seen.has(candidate))
4060
+ return 0;
4061
+ seen.add(candidate);
4062
+ let total = 0;
4063
+ const values = Array.isArray(candidate) ? candidate : Object.values(candidate);
4064
+ for (const item of values)
4065
+ total += visit(item);
4066
+ return total;
4067
+ };
4068
+ return visit(value);
4069
+ }
4070
+
4005
4071
  // ../plugin/src/hooks/magic-context/tool-drop-target.ts
4006
4072
  var IGNORE_PART_TYPES = new Set([
4007
4073
  "thinking",
@@ -4272,6 +4338,67 @@ function hasRawSessionMessageById2(sessionId, messageId) {
4272
4338
  return provider.hasMessageById(messageId);
4273
4339
  return readRawSessionMessageById(sessionId, messageId) !== null;
4274
4340
  }
4341
+ function readRawSessionMessageOrdinalById2(sessionId, messageId) {
4342
+ const provider = sessionProviders.get(sessionId);
4343
+ if (provider?.readMessageOrdinalById) {
4344
+ return provider.readMessageOrdinalById(messageId);
4345
+ }
4346
+ if (provider?.readMessageIdOrdinals) {
4347
+ return provider.readMessageIdOrdinals().get(messageId) ?? null;
4348
+ }
4349
+ if (provider?.readMessageOrdinalPage) {
4350
+ let after = null;
4351
+ let ordinal = 0;
4352
+ while (true) {
4353
+ const page = provider.readMessageOrdinalPage(after, 500);
4354
+ if (page.length === 0)
4355
+ return null;
4356
+ for (const entry of page) {
4357
+ if (entry.contributesOrdinal)
4358
+ ordinal += 1;
4359
+ if (entry.id === messageId)
4360
+ return entry.contributesOrdinal ? ordinal : null;
4361
+ }
4362
+ const last = page.at(-1);
4363
+ if (!last || page.length < 500)
4364
+ return null;
4365
+ after = { timeCreated: last.timeCreated, id: last.id };
4366
+ }
4367
+ }
4368
+ if (provider?.readMessageById) {
4369
+ return provider.readMessageById(messageId)?.ordinal ?? null;
4370
+ }
4371
+ if (provider) {
4372
+ return provider.readMessages().find((message) => message.id === messageId)?.ordinal ?? null;
4373
+ }
4374
+ if (!openCodeDbExists())
4375
+ return null;
4376
+ return withReadOnlySessionDb((db) => readRawSessionMessageOrdinalByIdFromDb(db, sessionId, messageId));
4377
+ }
4378
+ function compareRawSessionMessageOrder2(sessionId, leftId, rightId) {
4379
+ const provider = sessionProviders.get(sessionId);
4380
+ if (provider) {
4381
+ if (!provider.readMessageOrdinalById)
4382
+ return null;
4383
+ const left = provider.readMessageOrdinalById(leftId);
4384
+ const right = provider.readMessageOrdinalById(rightId);
4385
+ return left === null || right === null ? null : left - right;
4386
+ }
4387
+ if (!openCodeDbExists())
4388
+ return null;
4389
+ return withReadOnlySessionDb((db) => {
4390
+ const lookup = db.prepare("SELECT time_created, id FROM message WHERE session_id = ? AND id = ? LIMIT 1");
4391
+ const left = lookup.get(sessionId, leftId);
4392
+ const right = lookup.get(sessionId, rightId);
4393
+ if (typeof left?.time_created !== "number" || typeof right?.time_created !== "number" || typeof left.id !== "string" || typeof right.id !== "string") {
4394
+ return null;
4395
+ }
4396
+ if (left.time_created !== right.time_created) {
4397
+ return left.time_created - right.time_created;
4398
+ }
4399
+ return left.id < right.id ? -1 : left.id > right.id ? 1 : 0;
4400
+ });
4401
+ }
4275
4402
  function readRawSessionMessageById(sessionId, messageId) {
4276
4403
  const provider = sessionProviders.get(sessionId);
4277
4404
  if (provider?.readMessageById) {
@@ -4650,4 +4777,4 @@ function readSessionChunk2(sessionId, tokenBudget, offset = 1, eligibleEndOrdina
4650
4777
  toolResultBoundaries
4651
4778
  };
4652
4779
  }
4653
- export { CTX_REDUCE_KEEP, newestCtxReduceTagNumbers, textMentionsRecentCommit, removeSystemReminders, hasMeaningfulUserText2, extractTexts2, extractToolCallSummaries, preloadTokenizer, estimateTokens, normalizeText, stripWellFormedLeadingTagPrefix, stripPersistedAssistantText, byteSize, stripTagPrefix, peelLeadingMcTagNotation, prependTag, isRecord, stableStringify, estimateImageTokensFromDataUrl, TODO_STATUSES, TODO_PRIORITIES, TITLE_DONE_STATUSES, normalizeTodoStateJson, buildSyntheticTodoPart, stripChannel1ReminderSpans, compareMeasuredTailPrefix, formatTailHygienePrefixMismatch, freezeTailHygieneMeasurement, effectiveTailHygiene, CHANNEL1_SENTINEL, CHANNEL1_FLOOR_TOKENS, decideChannel1, evaluateChannel2, reclaimableToolOutputCount, buildChannel2Reminder, buildChannel1Reminder, planEmergencyDrop, measureEmergencyTag, updateTagByteSize, getRecentTagOwnerMessageIds, AGE_RECLAIM_MIN_TOKENS, getOldestActiveUnprotectedToolTags, getActiveToolTagsForAgeReclaim, getTriggerTagTokenUpperBound, updateTagInputByteSize, updateTagTokenCount, getPersistedToolTagAccounting, getAllStatusTagTokenTotalsFlat, updateTagInputTokenCount, tagTokenCountIsNull, backfillTagTokenCounts, insertTag, updateTagStatus, getInertWhitespaceAssistantTags, updateTagDropMode, updateCavemanDepth, hasPiFallbackMessageTags, findAdoptableFallbackTags, hasPiFallbackToolOwnerTags, findPiFallbackToolOwnerTags, adoptPiFallbackToolOwnerTag, adoptPiFallbackMessageTag, getMaxTagNumberBySession, getTagNumberByMessageId, getAssignableTagNumberByMessageId, deriveTagLoadFloor, TAG_SELECT_COLUMNS, getTagsBySession, getActiveTagsBySession, getTagsForPendingOperations, getTagsByNumbers, getDroppedTagsByNumbers, getMaxDroppedTagNumber, getToolTagNumberByOwner, getNullOwnerToolTag, adoptNullOwnerToolTag, retreatPastHostUnservedRows, resolveOpenCodeDbPath, hasV1MessageTables, assertOpenCodeStoreGeneration, openCodeDbPathExists, getOpenCodeDbProbeDescriptions, recordOpenCodeDbReadFailure, clearOpenCodeDbReadFailure, claimOpenCodeDbDiagnosticOnce, registerSlowWriteReporter, detectSqliteRuntime, Database, withPrivilegedWriter, closeQuietly, withReadOnlySessionDb, completedToolArcCrossesBoundary, estimateTrueRawMessageTokens, buildToolArcs, fenceBoundaryForCompletedToolArcs, fenceBoundaryForToolArcs, buildTrueRawTokenIndex, computeRawRangeFingerprint, invalidateTrueRawTokenCache, droppedInputMarker, createDroppedInputGuard, isEditTool, applyEditMarkerToInput, setDatabase, loadToolDefinitionMeasurements, resolveDecisionCalibration, providerMass, localBudget, calibrationForModelKey, historyLocalBudget, resolveHostServedBoundaryId2, hasRawMessageProvider2, setRawMessageProvider2, withRawMessageProvider2, cleanUserText2, withRawSessionMessageCache2, readRawSessionMessages2, readRawSessionMessagePage2, getRawSessionMessageOrdinalCount2, readRawSessionMessageRange2, primeTailRawMessageCache2, getCachedAbsoluteMessageCount2, primeInMemoryTailRawMessageCache2, readRawSessionMessageIdOrdinalsForRange2, hasRawSessionMessageById2, getRawSessionMessageCount2, getRawSessionTagKeysThrough2, getLegacyProtectedTailStartOrdinal2, readSessionChunk2 };
4780
+ export { CTX_REDUCE_KEEP, newestCtxReduceTagNumbers, textMentionsRecentCommit, removeSystemReminders, hasMeaningfulUserText2, extractTexts2, extractToolCallSummaries, preloadTokenizer, estimateTokens, normalizeText, stripWellFormedLeadingTagPrefix, stripPersistedAssistantText, byteSize, stripTagPrefix, peelLeadingMcTagNotation, prependTag, isRecord, stableStringify, estimateImageTokensFromDataUrl, TODO_STATUSES, TODO_PRIORITIES, TITLE_DONE_STATUSES, normalizeTodoStateJson, buildSyntheticTodoPart, stripChannel1ReminderSpans, compareMeasuredTailPrefix, formatTailHygienePrefixMismatch, freezeTailHygieneMeasurement, effectiveTailHygiene, CHANNEL1_SENTINEL, CHANNEL1_FLOOR_TOKENS, decideChannel1, evaluateChannel2, reclaimableToolOutputCount, buildChannel2Reminder, buildChannel1Reminder, planEmergencyDrop, measureEmergencyTag, updateTagByteSize, getRecentTagOwnerMessageIds, AGE_RECLAIM_MIN_TOKENS, getOldestActiveUnprotectedToolTags, getActiveToolTagsForAgeReclaim, getTriggerTagTokenUpperBound, updateTagInputByteSize, updateTagTokenCount, getPersistedToolTagAccounting, getAllStatusTagTokenTotalsFlat, updateTagInputTokenCount, tagTokenCountIsNull, backfillTagTokenCounts, insertTag, updateTagStatus, getInertWhitespaceAssistantTags, updateTagDropMode, updateCavemanDepth, hasPiFallbackMessageTags, findAdoptableFallbackTags, hasPiFallbackToolOwnerTags, findPiFallbackToolOwnerTags, adoptPiFallbackToolOwnerTag, adoptPiFallbackMessageTag, getMaxTagNumberBySession, getTagNumberByMessageId, getAssignableTagNumberByMessageId, deriveTagLoadFloor, TAG_SELECT_COLUMNS, getTagsBySession, getActiveTagsBySession, getTagsForPendingOperations, getTagsByNumbers, getDroppedTagsByNumbers, getMaxDroppedTagNumber, getToolTagNumberByOwner, getNullOwnerToolTag, adoptNullOwnerToolTag, retreatPastHostUnservedRows, resolveOpenCodeDbPath, hasV1MessageTables, assertOpenCodeStoreGeneration, openCodeDbPathExists, getOpenCodeDbProbeDescriptions, recordOpenCodeDbReadFailure, clearOpenCodeDbReadFailure, claimOpenCodeDbDiagnosticOnce, registerSlowWriteReporter, detectSqliteRuntime, Database, withPrivilegedWriter, closeQuietly, withReadOnlySessionDb, completedToolArcCrossesBoundary, estimateTrueRawMessageTokens, buildToolArcs, fenceBoundaryForCompletedToolArcs, fenceBoundaryForToolArcs, buildTrueRawTokenIndex, computeRawRangeFingerprint, invalidateTrueRawTokenCache, droppedInputMarker, createDroppedInputGuard, isEditTool, applyEditMarkerToInput, setDatabase, loadToolDefinitionMeasurements, resolveDecisionCalibration, providerMass, localBudget, calibrationForModelKey, historyLocalBudget, SKELETON_REAL_INPUT_MAX_BYTES, toolInputStringBytes, resolveHostServedBoundaryId2, hasRawMessageProvider2, setRawMessageProvider2, withRawMessageProvider2, cleanUserText2, withRawSessionMessageCache2, readRawSessionMessages2, readRawSessionMessagePage2, getRawSessionMessageOrdinalCount2, readRawSessionMessageRange2, primeTailRawMessageCache2, getCachedAbsoluteMessageCount2, primeInMemoryTailRawMessageCache2, readRawSessionMessageIdOrdinalsForRange2, hasRawSessionMessageById2, readRawSessionMessageOrdinalById2, compareRawSessionMessageOrder2, getRawSessionMessageCount2, getRawSessionTagKeysThrough2, getLegacyProtectedTailStartOrdinal2, readSessionChunk2 };