@cortexkit/pi-magic-context 0.44.0 → 0.44.1
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.
- package/dist/{index-tfzybajk.js → index-59dmj4zs.js} +4 -1
- package/dist/{index-jscq7067.js → index-5fw91enm.js} +1 -1
- package/dist/{index-mmkdxa5j.js → index-97e5fzy3.js} +1 -1
- package/dist/{index-8ytss1hp.js → index-mwpk0wn9.js} +439 -277
- package/dist/{index-2kj55q4e.js → index-nm3c0sn8.js} +105 -13
- package/dist/index.js +631 -447
- package/dist/{message-time-backfill-3rp0w2z9.js → message-time-backfill-5yrp95cx.js} +2 -2
- package/dist/{read-session-chunk-2s116ah5.js → read-session-chunk-ka7n4kah.js} +4 -2
- package/dist/{safe-notification-target-pd09ybr0.js → safe-notification-target-y3hg2m7p.js} +2 -2
- package/dist/subagent-entry.js +6 -6
- package/package.json +1 -1
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getHarness,
|
|
3
|
+
harnessOwnsOpenCodeStore,
|
|
3
4
|
log
|
|
4
|
-
} from "./index-
|
|
5
|
+
} from "./index-59dmj4zs.js";
|
|
5
6
|
|
|
6
7
|
// ../plugin/src/features/magic-context/reclaim-protection.ts
|
|
7
8
|
var CTX_REDUCE_KEEP = 3;
|
|
@@ -2441,7 +2442,7 @@ function closeQuietly(db) {
|
|
|
2441
2442
|
|
|
2442
2443
|
// ../plugin/src/hooks/magic-context/read-session-db.ts
|
|
2443
2444
|
function openCodeDbExists() {
|
|
2444
|
-
return openCodeDbPathExists(resolveOpenCodeDbPath());
|
|
2445
|
+
return harnessOwnsOpenCodeStore() && openCodeDbPathExists(resolveOpenCodeDbPath());
|
|
2445
2446
|
}
|
|
2446
2447
|
var cachedReadOnlyDb = null;
|
|
2447
2448
|
function closeCachedReadOnlyDb() {
|
|
@@ -2457,6 +2458,9 @@ function closeCachedReadOnlyDb() {
|
|
|
2457
2458
|
}
|
|
2458
2459
|
}
|
|
2459
2460
|
function getReadOnlySessionDb() {
|
|
2461
|
+
if (!harnessOwnsOpenCodeStore()) {
|
|
2462
|
+
throw new Error("OpenCode session database is not readable from a Pi-compatible process; its history lives in Pi sessions");
|
|
2463
|
+
}
|
|
2460
2464
|
const resolution = resolveOpenCodeDbPath();
|
|
2461
2465
|
const dbPath = resolution.path;
|
|
2462
2466
|
if (!openCodeDbPathExists(resolution)) {
|
|
@@ -2499,7 +2503,7 @@ function logProbeFailureOnce(resolution, error) {
|
|
|
2499
2503
|
}
|
|
2500
2504
|
function getMessageTimesFromOpenCodeDb(sessionId, messageIds) {
|
|
2501
2505
|
const result = new Map;
|
|
2502
|
-
if (messageIds.length === 0)
|
|
2506
|
+
if (messageIds.length === 0 || !harnessOwnsOpenCodeStore())
|
|
2503
2507
|
return result;
|
|
2504
2508
|
try {
|
|
2505
2509
|
withReadOnlySessionDb((db) => {
|
|
@@ -2606,11 +2610,23 @@ function readRawSessionMessagesFromDb(db, sessionId) {
|
|
|
2606
2610
|
});
|
|
2607
2611
|
}
|
|
2608
2612
|
function readRawSessionMessagePageFromDb(db, sessionId, afterOrdinal, limit, finalWatermark = Number.MAX_SAFE_INTEGER) {
|
|
2613
|
+
const messageRows = readRawMessagePageRows(db, sessionId, afterOrdinal, limit, finalWatermark);
|
|
2614
|
+
if (messageRows.length === 0)
|
|
2615
|
+
return [];
|
|
2616
|
+
const placeholders = messageRows.map(() => "?").join(", ");
|
|
2617
|
+
const partRows = db.prepare(`SELECT message_id, data, time_updated
|
|
2618
|
+
FROM part
|
|
2619
|
+
WHERE +session_id = ?
|
|
2620
|
+
AND likelihood(message_id IN (${placeholders}), 0.000001)
|
|
2621
|
+
ORDER BY message_id ASC, time_created ASC, id ASC`).all(sessionId, ...messageRows.map((row) => row.id)).filter(isRawPartRow);
|
|
2622
|
+
return assembleRawMessagePage(messageRows, partRows);
|
|
2623
|
+
}
|
|
2624
|
+
function readRawMessagePageRows(db, sessionId, afterOrdinal, limit, finalWatermark) {
|
|
2609
2625
|
const remaining = Math.max(0, Math.floor(finalWatermark) - Math.floor(afterOrdinal));
|
|
2610
2626
|
const pageSize = Math.min(Math.max(1, Math.floor(limit)), remaining);
|
|
2611
2627
|
if (pageSize === 0)
|
|
2612
2628
|
return [];
|
|
2613
|
-
|
|
2629
|
+
return db.prepare(`SELECT id, data, time_created, time_updated
|
|
2614
2630
|
FROM message
|
|
2615
2631
|
WHERE session_id = ?
|
|
2616
2632
|
AND NOT (
|
|
@@ -2626,14 +2642,8 @@ function readRawSessionMessagePageFromDb(db, sessionId, afterOrdinal, limit, fin
|
|
|
2626
2642
|
...row,
|
|
2627
2643
|
ordinal: Math.floor(afterOrdinal) + index + 1
|
|
2628
2644
|
}));
|
|
2629
|
-
|
|
2630
|
-
|
|
2631
|
-
const placeholders = messageRows.map(() => "?").join(", ");
|
|
2632
|
-
const partRows = db.prepare(`SELECT message_id, data, time_updated
|
|
2633
|
-
FROM part
|
|
2634
|
-
WHERE +session_id = ?
|
|
2635
|
-
AND likelihood(message_id IN (${placeholders}), 0.000001)
|
|
2636
|
-
ORDER BY message_id ASC, time_created ASC, id ASC`).all(sessionId, ...messageRows.map((row) => row.id)).filter(isRawPartRow);
|
|
2645
|
+
}
|
|
2646
|
+
function assembleRawMessagePage(messageRows, partRows) {
|
|
2637
2647
|
const partsByMessageId = new Map;
|
|
2638
2648
|
for (const part of partRows) {
|
|
2639
2649
|
const list = partsByMessageId.get(part.message_id) ?? [];
|
|
@@ -2652,6 +2662,49 @@ function readRawSessionMessagePageFromDb(db, sessionId, afterOrdinal, limit, fin
|
|
|
2652
2662
|
};
|
|
2653
2663
|
});
|
|
2654
2664
|
}
|
|
2665
|
+
var RAW_SUMMARY_TEXT_MAX_CHARS = 8192;
|
|
2666
|
+
var RAW_SUMMARY_ARG_MAX_CHARS = 512;
|
|
2667
|
+
var RAW_SUMMARY_TOOL_INPUT_KEYS = [
|
|
2668
|
+
"description",
|
|
2669
|
+
"filePath",
|
|
2670
|
+
"path",
|
|
2671
|
+
"pattern",
|
|
2672
|
+
"query",
|
|
2673
|
+
"symbol",
|
|
2674
|
+
"module",
|
|
2675
|
+
"action"
|
|
2676
|
+
];
|
|
2677
|
+
function summaryStringField(jsonPath) {
|
|
2678
|
+
return `CASE WHEN json_type(data, '${jsonPath}') = 'text' THEN substr(json_extract(data, '${jsonPath}'), 1, ${RAW_SUMMARY_ARG_MAX_CHARS}) END`;
|
|
2679
|
+
}
|
|
2680
|
+
var RAW_SUMMARY_PART_DATA_SQL = `CASE
|
|
2681
|
+
WHEN json_extract(data, '$.type') = 'text'
|
|
2682
|
+
THEN json_set(data, '$.text', substr(json_extract(data, '$.text'), 1, ${RAW_SUMMARY_TEXT_MAX_CHARS}))
|
|
2683
|
+
ELSE json_object(
|
|
2684
|
+
'type', 'tool',
|
|
2685
|
+
'tool', ${summaryStringField("$.tool")},
|
|
2686
|
+
'callID', ${summaryStringField("$.callID")},
|
|
2687
|
+
'state', json_object(
|
|
2688
|
+
'status', ${summaryStringField("$.state.status")},
|
|
2689
|
+
'input', json_object(${RAW_SUMMARY_TOOL_INPUT_KEYS.map((key) => `'${key}', ${summaryStringField(`$.state.input.${key}`)}`).join(", ")}),
|
|
2690
|
+
'metadata', json_object('description', ${summaryStringField("$.state.metadata.description")})
|
|
2691
|
+
)
|
|
2692
|
+
)
|
|
2693
|
+
END`;
|
|
2694
|
+
function readRawSessionMessageSummaryPageFromDb(db, sessionId, afterOrdinal, limit, finalWatermark = Number.MAX_SAFE_INTEGER) {
|
|
2695
|
+
const messageRows = readRawMessagePageRows(db, sessionId, afterOrdinal, limit, finalWatermark);
|
|
2696
|
+
if (messageRows.length === 0)
|
|
2697
|
+
return [];
|
|
2698
|
+
const placeholders = messageRows.map(() => "?").join(", ");
|
|
2699
|
+
const partRows = db.prepare(`SELECT message_id, ${RAW_SUMMARY_PART_DATA_SQL} AS data, time_updated
|
|
2700
|
+
FROM part
|
|
2701
|
+
WHERE +session_id = ?
|
|
2702
|
+
AND likelihood(message_id IN (${placeholders}), 0.000001)
|
|
2703
|
+
AND json_valid(data) = 1
|
|
2704
|
+
AND json_extract(data, '$.type') IN ('text', 'tool')
|
|
2705
|
+
ORDER BY message_id ASC, time_created ASC, id ASC`).all(sessionId, ...messageRows.map((row) => row.id)).filter(isRawPartRow);
|
|
2706
|
+
return assembleRawMessagePage(messageRows, partRows);
|
|
2707
|
+
}
|
|
2655
2708
|
function countRawSessionMessageOrdinalsFromDb(db, sessionId) {
|
|
2656
2709
|
const row = db.prepare(`SELECT COUNT(*) AS count
|
|
2657
2710
|
FROM message
|
|
@@ -4239,6 +4292,45 @@ function readRawSessionMessageRangeFromSource(sessionId, fromOrdinal, toOrdinal)
|
|
|
4239
4292
|
}
|
|
4240
4293
|
return messages;
|
|
4241
4294
|
}
|
|
4295
|
+
var RAW_MESSAGE_VISIT_PAGE_SIZE = 50;
|
|
4296
|
+
function visitRawSessionMessages2(sessionId, fromOrdinal, toOrdinal, visit, options = {}) {
|
|
4297
|
+
const from = Math.max(1, Math.floor(fromOrdinal));
|
|
4298
|
+
const to = Math.floor(toOrdinal);
|
|
4299
|
+
if (to < from)
|
|
4300
|
+
return;
|
|
4301
|
+
const provider = sessionProviders.get(sessionId);
|
|
4302
|
+
if (provider && !provider.readMessagePage) {
|
|
4303
|
+
for (const message of provider.readMessages()) {
|
|
4304
|
+
if (message.ordinal < from || message.ordinal > to)
|
|
4305
|
+
continue;
|
|
4306
|
+
if (!visit(message))
|
|
4307
|
+
return;
|
|
4308
|
+
}
|
|
4309
|
+
return;
|
|
4310
|
+
}
|
|
4311
|
+
if (!provider && !openCodeDbExists())
|
|
4312
|
+
return;
|
|
4313
|
+
const pageSize = Math.max(1, Math.floor(options.pageSize ?? RAW_MESSAGE_VISIT_PAGE_SIZE));
|
|
4314
|
+
let afterOrdinal = from - 1;
|
|
4315
|
+
while (afterOrdinal < to) {
|
|
4316
|
+
const limit = Math.min(pageSize, to - afterOrdinal);
|
|
4317
|
+
const cursor = afterOrdinal;
|
|
4318
|
+
const page = provider?.readMessagePage ? provider.readMessagePage(cursor, limit, to) : withReadOnlySessionDb((db) => options.summary ? readRawSessionMessageSummaryPageFromDb(db, sessionId, cursor, limit, to) : readRawSessionMessagePageFromDb(db, sessionId, cursor, limit, to));
|
|
4319
|
+
if (page.length === 0)
|
|
4320
|
+
return;
|
|
4321
|
+
let nextOrdinal = afterOrdinal;
|
|
4322
|
+
for (const message of page) {
|
|
4323
|
+
if (message.ordinal < from || message.ordinal > to)
|
|
4324
|
+
continue;
|
|
4325
|
+
if (!visit(message))
|
|
4326
|
+
return;
|
|
4327
|
+
nextOrdinal = Math.max(nextOrdinal, message.ordinal);
|
|
4328
|
+
}
|
|
4329
|
+
if (nextOrdinal <= afterOrdinal)
|
|
4330
|
+
return;
|
|
4331
|
+
afterOrdinal = nextOrdinal;
|
|
4332
|
+
}
|
|
4333
|
+
}
|
|
4242
4334
|
function readRawSessionMessageRange2(sessionId, fromOrdinal, toOrdinal) {
|
|
4243
4335
|
const from = Math.max(1, Math.floor(fromOrdinal));
|
|
4244
4336
|
const to = Math.floor(toOrdinal);
|
|
@@ -4777,4 +4869,4 @@ function readSessionChunk2(sessionId, tokenBudget, offset = 1, eligibleEndOrdina
|
|
|
4777
4869
|
toolResultBoundaries
|
|
4778
4870
|
};
|
|
4779
4871
|
}
|
|
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 };
|
|
4872
|
+
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, RAW_SUMMARY_TEXT_MAX_CHARS, 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, visitRawSessionMessages2, readRawSessionMessageRange2, primeTailRawMessageCache2, getCachedAbsoluteMessageCount2, primeInMemoryTailRawMessageCache2, readRawSessionMessageIdOrdinalsForRange2, hasRawSessionMessageById2, readRawSessionMessageOrdinalById2, compareRawSessionMessageOrder2, getRawSessionMessageCount2, getRawSessionTagKeysThrough2, getLegacyProtectedTailStartOrdinal2, readSessionChunk2 };
|