@cortexkit/opencode-magic-context 0.42.5 → 0.42.6
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/README.md +2 -2
- package/dist/config/index.d.ts +9 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/schema/magic-context.d.ts +1 -0
- package/dist/config/schema/magic-context.d.ts.map +1 -1
- package/dist/{conflict-warning-hook-jyj54gbe.js → conflict-warning-hook-aktepwpz.js} +3 -3
- package/dist/features/magic-context/compaction-marker.d.ts.map +1 -1
- package/dist/features/magic-context/context-authority.d.ts +28 -1
- package/dist/features/magic-context/context-authority.d.ts.map +1 -1
- package/dist/features/magic-context/dreamer/open-opencode-db.d.ts.map +1 -1
- package/dist/features/magic-context/dreamer/task-scheduler.d.ts.map +1 -1
- package/dist/features/magic-context/memory/embedding-local.d.ts +1 -0
- package/dist/features/magic-context/memory/embedding-local.d.ts.map +1 -1
- package/dist/features/magic-context/memory/embedding.d.ts +1 -1
- package/dist/features/magic-context/memory/embedding.d.ts.map +1 -1
- package/dist/features/magic-context/message-index.d.ts.map +1 -1
- package/dist/features/magic-context/migrations.d.ts +12 -0
- package/dist/features/magic-context/migrations.d.ts.map +1 -1
- package/dist/features/magic-context/project-embedding-registry.d.ts +1 -0
- package/dist/features/magic-context/project-embedding-registry.d.ts.map +1 -1
- package/dist/features/magic-context/session-project-backfill.d.ts.map +1 -1
- package/dist/features/magic-context/storage-db.d.ts +1 -1
- package/dist/features/magic-context/tool-owner-backfill.d.ts.map +1 -1
- package/dist/hooks/auto-update-checker/index.d.ts.map +1 -1
- package/dist/hooks/magic-context/cache-busting-signals.d.ts +0 -1
- package/dist/hooks/magic-context/cache-busting-signals.d.ts.map +1 -1
- package/dist/hooks/magic-context/channel2-delivery.d.ts +8 -0
- package/dist/hooks/magic-context/channel2-delivery.d.ts.map +1 -1
- package/dist/hooks/magic-context/compartment-runner-incremental.d.ts +12 -0
- package/dist/hooks/magic-context/compartment-runner-incremental.d.ts.map +1 -1
- package/dist/hooks/magic-context/hook.d.ts +4 -4
- package/dist/hooks/magic-context/hook.d.ts.map +1 -1
- package/dist/hooks/magic-context/module-state-sync.d.ts +3 -0
- package/dist/hooks/magic-context/module-state-sync.d.ts.map +1 -1
- package/dist/hooks/magic-context/module-transport.d.ts +24 -2
- package/dist/hooks/magic-context/module-transport.d.ts.map +1 -1
- package/dist/hooks/magic-context/module-wire.d.ts +1 -1
- package/dist/hooks/magic-context/module-wire.d.ts.map +1 -1
- package/dist/hooks/magic-context/producer-window-guard.d.ts +31 -1
- package/dist/hooks/magic-context/producer-window-guard.d.ts.map +1 -1
- package/dist/hooks/magic-context/read-session-chunk.d.ts +6 -0
- package/dist/hooks/magic-context/read-session-chunk.d.ts.map +1 -1
- package/dist/hooks/magic-context/read-session-db.d.ts +8 -0
- package/dist/hooks/magic-context/read-session-db.d.ts.map +1 -1
- package/dist/hooks/magic-context/read-session-formatting.d.ts +6 -0
- package/dist/hooks/magic-context/read-session-formatting.d.ts.map +1 -1
- package/dist/hooks/magic-context/rust-mode-transform.d.ts +30 -0
- package/dist/hooks/magic-context/rust-mode-transform.d.ts.map +1 -1
- package/dist/hooks/magic-context/rust-refusal-recovery.d.ts +28 -0
- package/dist/hooks/magic-context/rust-refusal-recovery.d.ts.map +1 -0
- package/dist/hooks/magic-context/transform-postprocess-phase.d.ts.map +1 -1
- package/dist/hooks/magic-context/transform.d.ts +7 -0
- package/dist/hooks/magic-context/transform.d.ts.map +1 -1
- package/dist/{index-jkrqhc7y.js → index-a9ssj59b.js} +94 -15
- package/dist/{index-3wbd8sdq.js → index-djp6rwz6.js} +455 -46
- package/dist/{index-p474rw9p.js → index-ngjmj6xx.js} +1 -1
- package/dist/{index-d8mgqezq.js → index-s61hh7gv.js} +50 -17
- package/dist/{index-1ar7b3e9.js → index-znraa0kv.js} +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1485 -360
- package/dist/plugin/embedding-bootstrap.d.ts.map +1 -1
- package/dist/plugin/hooks/create-session-hooks.d.ts.map +1 -1
- package/dist/plugin/memory-id-translation.d.ts +23 -0
- package/dist/plugin/memory-id-translation.d.ts.map +1 -0
- package/dist/plugin/rust-tool-backends.d.ts +1 -1
- package/dist/plugin/rust-tool-backends.d.ts.map +1 -1
- package/dist/{recomp-orchestrator-k20sfpm2.js → recomp-orchestrator-0xx1364v.js} +4 -4
- package/dist/{send-session-notification-xnypkxpx.js → send-session-notification-jbxknvar.js} +2 -2
- package/dist/shared/auto-update-provenance.d.ts +9 -0
- package/dist/shared/auto-update-provenance.d.ts.map +1 -0
- package/dist/shared/conflict-detector.d.ts +5 -1
- package/dist/shared/conflict-detector.d.ts.map +1 -1
- package/dist/shared/opencode-db-path.d.ts +31 -2
- package/dist/shared/opencode-db-path.d.ts.map +1 -1
- package/dist/shared/prompt-surface-runtime.d.ts +3 -3
- package/dist/shared/prompt-surface-runtime.d.ts.map +1 -1
- package/dist/{storage-meta-session-x3j0q9qy.js → storage-meta-session-z818pn1e.js} +2 -2
- package/dist/tools/ctx-expand/mode.d.ts +31 -0
- package/dist/tools/ctx-expand/mode.d.ts.map +1 -0
- package/dist/tools/ctx-expand/tools.d.ts.map +1 -1
- package/dist/tools/ctx-memory/tools.d.ts.map +1 -1
- package/dist/tools/ctx-note/constants.d.ts +1 -1
- package/dist/tools/ctx-note/constants.d.ts.map +1 -1
- package/dist/tools/ctx-note/tools.d.ts.map +1 -1
- package/dist/tools/ctx-note/types.d.ts +1 -1
- package/dist/tools/ctx-note/types.d.ts.map +1 -1
- package/dist/tools/ctx-reduce/constants.d.ts +1 -1
- package/dist/tools/ctx-reduce/constants.d.ts.map +1 -1
- package/dist/tools/ctx-search/types.d.ts +1 -1
- package/dist/tools/ctx-search/types.d.ts.map +1 -1
- package/dist/tools/light-descriptions.d.ts +2 -2
- package/dist/tools/light-descriptions.d.ts.map +1 -1
- package/dist/v2/hidden-completion.d.ts +69 -13
- package/dist/v2/hidden-completion.d.ts.map +1 -1
- package/dist/v2/hooks/context.d.ts +13 -1
- package/dist/v2/hooks/context.d.ts.map +1 -1
- package/dist/v2/hooks/hidden-child.d.ts +31 -0
- package/dist/v2/hooks/hidden-child.d.ts.map +1 -0
- package/dist/v2/hooks/store.d.ts.map +1 -1
- package/dist/v2/hooks/types.d.ts +99 -19
- package/dist/v2/hooks/types.d.ts.map +1 -1
- package/dist/v2/server.d.ts +19 -0
- package/dist/v2/server.d.ts.map +1 -1
- package/dist/v2/server.js +1781 -253
- package/dist/v2/store-reader.d.ts +11 -5
- package/dist/v2/store-reader.d.ts.map +1 -1
- package/dist/v2/tui/index.d.ts +10 -0
- package/dist/v2/tui/index.d.ts.map +1 -0
- package/dist/v2/tui/types.d.ts +80 -0
- package/dist/v2/tui/types.d.ts.map +1 -0
- package/package.json +5 -4
- package/src/agents/magic-context-prompt.ts +1 -1
- package/src/config/index.ts +31 -1
- package/src/config/protected-tokens.test.ts +40 -0
- package/src/config/schema/magic-context.ts +8 -3
- package/src/shared/auto-update-provenance.ts +42 -0
- package/src/shared/conflict-detector.test.ts +53 -0
- package/src/shared/conflict-detector.ts +88 -19
- package/src/shared/models-dev-cache.test.ts +25 -0
- package/src/shared/opencode-db-path.test.ts +96 -0
- package/src/shared/opencode-db-path.ts +146 -15
- package/src/shared/prompt-surface-a1-golden.md +12 -16
- package/src/shared/prompt-surface-runtime.test.ts +20 -0
- package/src/shared/prompt-surface-runtime.ts +7 -5
- package/src/tui/entry.mjs +11 -1
- package/src/v2/tui/host-contract.test.ts +202 -0
- package/src/v2/tui/index.ts +270 -0
- package/src/v2/tui/types.ts +67 -0
|
@@ -11,9 +11,10 @@ import {
|
|
|
11
11
|
SESSION_SCOPED_TABLES,
|
|
12
12
|
deleteSessionScopedRows,
|
|
13
13
|
updateSessionMeta2
|
|
14
|
-
} from "./index-
|
|
14
|
+
} from "./index-znraa0kv.js";
|
|
15
15
|
import {
|
|
16
16
|
resolveOpenCodeDbPath,
|
|
17
|
+
assertOpenCodeStoreGeneration,
|
|
17
18
|
openCodeDbPathExists,
|
|
18
19
|
claimOpenCodeDbDiagnosticOnce,
|
|
19
20
|
registerSlowWriteReporter,
|
|
@@ -25,7 +26,7 @@ import {
|
|
|
25
26
|
withReadOnlySessionDb,
|
|
26
27
|
getRawSessionMessageCountFromDb,
|
|
27
28
|
getMessageTimesFromOpenCodeDb
|
|
28
|
-
} from "./index-
|
|
29
|
+
} from "./index-a9ssj59b.js";
|
|
29
30
|
import {
|
|
30
31
|
pushNotification2
|
|
31
32
|
} from "./index-jdxxq8cz.js";
|
|
@@ -47,7 +48,7 @@ import {
|
|
|
47
48
|
getErrorMessage,
|
|
48
49
|
describeError,
|
|
49
50
|
sendStatusNotification2
|
|
50
|
-
} from "./index-
|
|
51
|
+
} from "./index-ngjmj6xx.js";
|
|
51
52
|
import {
|
|
52
53
|
piModelRefToCanonical,
|
|
53
54
|
modelRefLookupOrder
|
|
@@ -2168,6 +2169,20 @@ function prepareMirrorPageStatements(db) {
|
|
|
2168
2169
|
function mirrorIdentity(db, domain, moduleProject, moduleRowId, statements) {
|
|
2169
2170
|
return (statements?.identityByModule ?? db.prepare("SELECT context_row_id FROM mirror_identity WHERE domain = ? AND module_project = ? AND module_row_id = ?")).get(domain, moduleProject, moduleRowId) ?? null;
|
|
2170
2171
|
}
|
|
2172
|
+
function moduleMemoryIdentityForHostId(db, contextRowId) {
|
|
2173
|
+
const row = db.prepare(`SELECT module_project, module_row_id, context_row_id
|
|
2174
|
+
FROM mirror_identity
|
|
2175
|
+
WHERE domain = 'memories' AND context_row_id = ?`).get(contextRowId);
|
|
2176
|
+
return row ? {
|
|
2177
|
+
moduleProject: row.module_project,
|
|
2178
|
+
moduleRowId: row.module_row_id,
|
|
2179
|
+
contextRowId: row.context_row_id
|
|
2180
|
+
} : null;
|
|
2181
|
+
}
|
|
2182
|
+
function hostMemoryIdentityForModuleId(db, moduleProject, moduleRowId) {
|
|
2183
|
+
const row = mirrorIdentity(db, "memories", moduleProject, moduleRowId);
|
|
2184
|
+
return row ? { moduleProject, moduleRowId, contextRowId: row.context_row_id } : null;
|
|
2185
|
+
}
|
|
2171
2186
|
function applyMirroredNoteCompileFields(args) {
|
|
2172
2187
|
return withPrivilegedWriter(args.db, () => {
|
|
2173
2188
|
const result = args.db.prepare(`UPDATE notes
|
|
@@ -2395,6 +2410,26 @@ function applyNoteRow(db, feed, statements) {
|
|
|
2395
2410
|
statements.updateNote.run(rowString(effectiveRow, "type", "smart"), contextStatus, moduleProject, rowNullableString(effectiveRow, "session_id"), rowString(effectiveRow, "content"), rowNullableString(effectiveRow, "surface_condition"), rowNullableString(effectiveRow, "compiled_provider"), rowNullableString(effectiveRow, "compiled_config"), typeof effectiveRow.compiled_at === "number" ? effectiveRow.compiled_at : null, rowNullableString(effectiveRow, "compile_status"), typeof effectiveRow.ready_at === "number" ? effectiveRow.ready_at : null, rowNullableString(effectiveRow, "ready_reason"), rowNullableString(effectiveRow, "manifest_json"), rowNullableString(effectiveRow, "compiled_check"), rowNullableString(effectiveRow, "check_hash"), rowNullableString(effectiveRow, "check_cron"), rowNumber(effectiveRow, "check_failure_count"), rowNumber(effectiveRow, "check_network_failure_count"), typeof effectiveRow.check_quarantined_until === "number" ? effectiveRow.check_quarantined_until : null, typeof effectiveRow.check_next_due_at === "number" ? effectiveRow.check_next_due_at : null, typeof effectiveRow.check_compiled_at === "number" ? effectiveRow.check_compiled_at : null, typeof effectiveRow.check_false_since_at === "number" ? effectiveRow.check_false_since_at : null, typeof effectiveRow.check_last_liveness_at === "number" ? effectiveRow.check_last_liveness_at : null, typeof effectiveRow.last_checked_at === "number" ? effectiveRow.last_checked_at : null, rowString(effectiveRow, "check_status", "uncompiled"), rowNumber(effectiveRow, "check_version"), rowNumber(effectiveRow, "policy_version", 1), rowNullableString(effectiveRow, "anchor_block_id"), typeof effectiveRow.anchor_ordinal === "number" ? effectiveRow.anchor_ordinal : null, rowNumber(effectiveRow, "created_at_ms"), rowNumber(effectiveRow, "updated_at_ms"), contextId);
|
|
2396
2411
|
statements.upsertNoteRevision.run(moduleProject, feed.module_row_id, contextId, rowNumber(effectiveRow, "status_version"));
|
|
2397
2412
|
}
|
|
2413
|
+
function applyTargetedMemoryMirrorRow(args) {
|
|
2414
|
+
const { db, row } = args;
|
|
2415
|
+
if (row.domain !== "memories" || row.op === "tombstone") {
|
|
2416
|
+
throw new Error("targeted memory mirror requires a live memory row");
|
|
2417
|
+
}
|
|
2418
|
+
const project = rowString(row.full_row_snapshot, "project_path");
|
|
2419
|
+
if (!project)
|
|
2420
|
+
throw new Error("memory feed snapshot has no project_path");
|
|
2421
|
+
withPrivilegedWriter(db, () => {
|
|
2422
|
+
db.transaction(() => {
|
|
2423
|
+
ensureMemoryRepairState(db);
|
|
2424
|
+
const statements = prepareMirrorPageStatements(db);
|
|
2425
|
+
applyMemoryRow(db, row, statements);
|
|
2426
|
+
translateMemoryReferences(statements);
|
|
2427
|
+
repairNullClobberedMemoryRows(statements);
|
|
2428
|
+
bumpDomainMutationEpoch(db, project, "memories");
|
|
2429
|
+
}).immediate();
|
|
2430
|
+
});
|
|
2431
|
+
return hostMemoryIdentityForModuleId(db, project, row.module_row_id);
|
|
2432
|
+
}
|
|
2398
2433
|
function applyMirrorPage(args) {
|
|
2399
2434
|
const { db, page } = args;
|
|
2400
2435
|
if (!AUTHORITY_DOMAINS.includes(page.domain))
|
|
@@ -2578,6 +2613,28 @@ async function pullAndApplyMirrorPageWithStatus(args) {
|
|
|
2578
2613
|
limit
|
|
2579
2614
|
});
|
|
2580
2615
|
const nextCursor = applyMirrorPage({ db: args.db, page: response.page });
|
|
2616
|
+
if (args.domain === "memories" && args.module.memoryIdentityAck) {
|
|
2617
|
+
const rowsByProject = new Map;
|
|
2618
|
+
for (const feed of response.page.rows) {
|
|
2619
|
+
if (feed.domain !== "memories" || feed.op === "tombstone")
|
|
2620
|
+
continue;
|
|
2621
|
+
const project = rowString(feed.full_row_snapshot, "project_path");
|
|
2622
|
+
if (!project)
|
|
2623
|
+
continue;
|
|
2624
|
+
const identity = mirrorIdentity(args.db, "memories", project, feed.module_row_id);
|
|
2625
|
+
if (!identity)
|
|
2626
|
+
continue;
|
|
2627
|
+
const rows = rowsByProject.get(project) ?? [];
|
|
2628
|
+
rows.push({
|
|
2629
|
+
module_row_id: feed.module_row_id,
|
|
2630
|
+
context_row_id: identity.context_row_id
|
|
2631
|
+
});
|
|
2632
|
+
rowsByProject.set(project, rows);
|
|
2633
|
+
}
|
|
2634
|
+
for (const [project, rows] of rowsByProject) {
|
|
2635
|
+
await args.module.memoryIdentityAck({ project, rows });
|
|
2636
|
+
}
|
|
2637
|
+
}
|
|
2581
2638
|
return {
|
|
2582
2639
|
cursor: nextCursor,
|
|
2583
2640
|
hasMore: response.page.has_more,
|
|
@@ -3768,6 +3825,114 @@ function isSqliteLockError(error) {
|
|
|
3768
3825
|
function tableExists2(db, name) {
|
|
3769
3826
|
return Boolean(db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name = ?").get(name));
|
|
3770
3827
|
}
|
|
3828
|
+
function tableHasHarnessColumn(db, name) {
|
|
3829
|
+
if (!tableExists2(db, name))
|
|
3830
|
+
return false;
|
|
3831
|
+
return db.prepare(`PRAGMA table_info(${name})`).all().some((column) => column.name === "harness");
|
|
3832
|
+
}
|
|
3833
|
+
var V85_OPENCODE2_RELABEL_TABLES = [
|
|
3834
|
+
"tags",
|
|
3835
|
+
"pending_ops",
|
|
3836
|
+
"source_contents",
|
|
3837
|
+
"compartments",
|
|
3838
|
+
"compartment_chunk_embeddings",
|
|
3839
|
+
"session_projects",
|
|
3840
|
+
"compartment_events",
|
|
3841
|
+
"compression_depth",
|
|
3842
|
+
"session_facts",
|
|
3843
|
+
"primer_candidates",
|
|
3844
|
+
"notes",
|
|
3845
|
+
"message_history_index",
|
|
3846
|
+
"message_history_source",
|
|
3847
|
+
"pending_session_cleanup",
|
|
3848
|
+
"message_history_orphan_sweep",
|
|
3849
|
+
"session_meta",
|
|
3850
|
+
"subagent_invocations",
|
|
3851
|
+
"historian_runs",
|
|
3852
|
+
"transform_decisions",
|
|
3853
|
+
"recomp_compartments",
|
|
3854
|
+
"recomp_facts"
|
|
3855
|
+
];
|
|
3856
|
+
var V85_OPTIONAL_OPENCODE2_RELABEL_TABLES = ["session_project_backfill_state"];
|
|
3857
|
+
function deleteLosingOpenCode2Twin(db, table, joinColumns, newerPredicate) {
|
|
3858
|
+
if (!tableHasHarnessColumn(db, table))
|
|
3859
|
+
return;
|
|
3860
|
+
const naturalJoin = joinColumns.map((column) => `oc.${column} = o2.${column}`).join(" AND ");
|
|
3861
|
+
const o2On = naturalJoin ? `${naturalJoin} AND oc.harness = 'opencode'` : `oc.harness = 'opencode'`;
|
|
3862
|
+
const ocOn = naturalJoin ? `${naturalJoin} AND o2.harness = 'opencode2'` : `o2.harness = 'opencode2'`;
|
|
3863
|
+
db.exec(`
|
|
3864
|
+
DELETE FROM ${table}
|
|
3865
|
+
WHERE rowid IN (
|
|
3866
|
+
SELECT o2.rowid
|
|
3867
|
+
FROM ${table} AS o2
|
|
3868
|
+
JOIN ${table} AS oc
|
|
3869
|
+
ON ${o2On}
|
|
3870
|
+
WHERE o2.harness = 'opencode2'
|
|
3871
|
+
AND NOT (${newerPredicate})
|
|
3872
|
+
);
|
|
3873
|
+
DELETE FROM ${table}
|
|
3874
|
+
WHERE rowid IN (
|
|
3875
|
+
SELECT oc.rowid
|
|
3876
|
+
FROM ${table} AS oc
|
|
3877
|
+
JOIN ${table} AS o2
|
|
3878
|
+
ON ${ocOn}
|
|
3879
|
+
WHERE oc.harness = 'opencode'
|
|
3880
|
+
AND (${newerPredicate})
|
|
3881
|
+
);
|
|
3882
|
+
`);
|
|
3883
|
+
}
|
|
3884
|
+
function relabelOpenCode2HarnessRows(db) {
|
|
3885
|
+
deleteLosingOpenCode2Twin(db, "session_projects", ["session_id"], "o2.updated_at > oc.updated_at");
|
|
3886
|
+
deleteLosingOpenCode2Twin(db, "primer_candidates", ["project_path", "session_id", "source_start_message_id", "source_end_message_id"], "o2.created_at > oc.created_at");
|
|
3887
|
+
deleteLosingOpenCode2Twin(db, "transform_decisions", ["session_id", "message_id"], "o2.ts_ms > oc.ts_ms");
|
|
3888
|
+
deleteLosingOpenCode2Twin(db, "message_history_orphan_sweep", [], "COALESCE(o2.last_swept_at, -1) > COALESCE(oc.last_swept_at, -1)");
|
|
3889
|
+
if (tableHasHarnessColumn(db, "session_project_backfill_state")) {
|
|
3890
|
+
db.exec(`
|
|
3891
|
+
DELETE FROM session_project_backfill_state
|
|
3892
|
+
WHERE harness = 'opencode2'
|
|
3893
|
+
AND EXISTS (
|
|
3894
|
+
SELECT 1 FROM session_project_backfill_state WHERE harness = 'opencode'
|
|
3895
|
+
)
|
|
3896
|
+
AND NOT (
|
|
3897
|
+
(status = 'completed'
|
|
3898
|
+
AND (SELECT status FROM session_project_backfill_state WHERE harness = 'opencode')
|
|
3899
|
+
!= 'completed')
|
|
3900
|
+
OR (
|
|
3901
|
+
status = (SELECT status FROM session_project_backfill_state WHERE harness = 'opencode')
|
|
3902
|
+
AND COALESCE(started_at, -1) > COALESCE(
|
|
3903
|
+
(SELECT started_at FROM session_project_backfill_state WHERE harness = 'opencode'),
|
|
3904
|
+
-1
|
|
3905
|
+
)
|
|
3906
|
+
)
|
|
3907
|
+
);
|
|
3908
|
+
DELETE FROM session_project_backfill_state
|
|
3909
|
+
WHERE harness = 'opencode'
|
|
3910
|
+
AND EXISTS (
|
|
3911
|
+
SELECT 1 FROM session_project_backfill_state WHERE harness = 'opencode2'
|
|
3912
|
+
)
|
|
3913
|
+
AND (
|
|
3914
|
+
((SELECT status FROM session_project_backfill_state WHERE harness = 'opencode2') = 'completed'
|
|
3915
|
+
AND status != 'completed')
|
|
3916
|
+
OR (
|
|
3917
|
+
status = (SELECT status FROM session_project_backfill_state WHERE harness = 'opencode2')
|
|
3918
|
+
AND COALESCE(
|
|
3919
|
+
(SELECT started_at FROM session_project_backfill_state WHERE harness = 'opencode2'),
|
|
3920
|
+
-1
|
|
3921
|
+
) > COALESCE(started_at, -1)
|
|
3922
|
+
)
|
|
3923
|
+
);
|
|
3924
|
+
`);
|
|
3925
|
+
}
|
|
3926
|
+
const tables = new Set([
|
|
3927
|
+
...V85_OPENCODE2_RELABEL_TABLES,
|
|
3928
|
+
...V85_OPTIONAL_OPENCODE2_RELABEL_TABLES
|
|
3929
|
+
]);
|
|
3930
|
+
for (const table of tables) {
|
|
3931
|
+
if (!tableHasHarnessColumn(db, table))
|
|
3932
|
+
continue;
|
|
3933
|
+
db.exec(`UPDATE ${table} SET harness = 'opencode' WHERE harness = 'opencode2'`);
|
|
3934
|
+
}
|
|
3935
|
+
}
|
|
3771
3936
|
function healMismatchedTierClose(db, table, hasLegacy) {
|
|
3772
3937
|
if (!tableExists2(db, table))
|
|
3773
3938
|
return;
|
|
@@ -5930,6 +6095,13 @@ var MIGRATIONS = [
|
|
|
5930
6095
|
ensureColumn(db, "session_meta", "protected_tokens_effective", "INTEGER");
|
|
5931
6096
|
ensureColumn(db, "session_meta", "protected_tokens_pre_snapshot", "TEXT");
|
|
5932
6097
|
}
|
|
6098
|
+
},
|
|
6099
|
+
{
|
|
6100
|
+
version: 85,
|
|
6101
|
+
description: "relabel OpenCode 1.x mis-tagged opencode2 session rows",
|
|
6102
|
+
up(db) {
|
|
6103
|
+
relabelOpenCode2HarnessRows(db);
|
|
6104
|
+
}
|
|
5933
6105
|
}
|
|
5934
6106
|
];
|
|
5935
6107
|
var LATEST_MIGRATION_VERSION = MIGRATIONS.reduce((max, m) => Math.max(max, m.version), 0);
|
|
@@ -6120,6 +6292,25 @@ function extractTexts(parts) {
|
|
|
6120
6292
|
}
|
|
6121
6293
|
return texts;
|
|
6122
6294
|
}
|
|
6295
|
+
function extractToolResultBodyTokens(parts) {
|
|
6296
|
+
let tokens = 0;
|
|
6297
|
+
for (const part of parts) {
|
|
6298
|
+
if (part === null || typeof part !== "object")
|
|
6299
|
+
continue;
|
|
6300
|
+
const p = part;
|
|
6301
|
+
if (p.type !== "tool")
|
|
6302
|
+
continue;
|
|
6303
|
+
const state = p.state;
|
|
6304
|
+
if (!state || typeof state !== "object")
|
|
6305
|
+
continue;
|
|
6306
|
+
const body = state.output ?? state.error;
|
|
6307
|
+
if (body === undefined)
|
|
6308
|
+
continue;
|
|
6309
|
+
const text = typeof body === "string" ? body : JSON.stringify(body);
|
|
6310
|
+
tokens += Math.ceil(text.length / 4);
|
|
6311
|
+
}
|
|
6312
|
+
return tokens;
|
|
6313
|
+
}
|
|
6123
6314
|
function extractToolCallSummaries(parts) {
|
|
6124
6315
|
const summaries = [];
|
|
6125
6316
|
for (const part of parts) {
|
|
@@ -6577,6 +6768,7 @@ function runToolOwnerBackfill(db) {
|
|
|
6577
6768
|
const escapedDbPath = opencodeDbPath.replaceAll("'", "''");
|
|
6578
6769
|
db.exec(`ATTACH '${escapedDbPath}' AS oc_backfill`);
|
|
6579
6770
|
try {
|
|
6771
|
+
assertOpenCodeStoreGeneration(db, "v1", opencodeDbPath, "oc_backfill");
|
|
6580
6772
|
backfillToolOwnersInChunks(db, result);
|
|
6581
6773
|
} finally {
|
|
6582
6774
|
try {
|
|
@@ -6795,7 +6987,7 @@ function getSchemaFenceRejection() {
|
|
|
6795
6987
|
function getMigrationOnOpenRefusal() {
|
|
6796
6988
|
return lastMigrationOnOpenRefusal;
|
|
6797
6989
|
}
|
|
6798
|
-
var LATEST_SUPPORTED_VERSION =
|
|
6990
|
+
var LATEST_SUPPORTED_VERSION = 85;
|
|
6799
6991
|
var BOOT_SQLITE_BUSY_TIMEOUT_MS = 5000;
|
|
6800
6992
|
var PERMISSIONS_ENFORCEABLE = process.platform !== "win32";
|
|
6801
6993
|
var defaultStoragePermissionFs = { chmodSync, mkdirSync };
|
|
@@ -7261,7 +7453,7 @@ function initializeDatabase(db, busyTimeoutMs = BOOT_SQLITE_BUSY_TIMEOUT_MS) {
|
|
|
7261
7453
|
tag_id INTEGER,
|
|
7262
7454
|
session_id TEXT,
|
|
7263
7455
|
content TEXT,
|
|
7264
|
-
created_at INTEGER,
|
|
7456
|
+
created_at INTEGER, -- epoch ms; Date.now() on source writes, preserved on session clones
|
|
7265
7457
|
harness TEXT NOT NULL DEFAULT 'opencode',
|
|
7266
7458
|
PRIMARY KEY(session_id, tag_id)
|
|
7267
7459
|
);
|
|
@@ -7285,7 +7477,7 @@ function initializeDatabase(db, busyTimeoutMs = BOOT_SQLITE_BUSY_TIMEOUT_MS) {
|
|
|
7285
7477
|
p1_embedding BLOB,
|
|
7286
7478
|
p1_embedding_model_id TEXT,
|
|
7287
7479
|
legacy INTEGER NOT NULL DEFAULT 0,
|
|
7288
|
-
created_at INTEGER NOT NULL,
|
|
7480
|
+
created_at INTEGER NOT NULL, -- epoch ms (Date.now())
|
|
7289
7481
|
harness TEXT NOT NULL DEFAULT 'opencode',
|
|
7290
7482
|
UNIQUE(session_id, sequence)
|
|
7291
7483
|
);
|
|
@@ -7304,7 +7496,7 @@ function initializeDatabase(db, busyTimeoutMs = BOOT_SQLITE_BUSY_TIMEOUT_MS) {
|
|
|
7304
7496
|
model_id TEXT NOT NULL,
|
|
7305
7497
|
dims INTEGER NOT NULL,
|
|
7306
7498
|
vector BLOB NOT NULL,
|
|
7307
|
-
created_at INTEGER NOT NULL,
|
|
7499
|
+
created_at INTEGER NOT NULL, -- epoch ms (Date.now())
|
|
7308
7500
|
UNIQUE(compartment_id, model_id, window_index)
|
|
7309
7501
|
);
|
|
7310
7502
|
CREATE INDEX IF NOT EXISTS idx_cce_session ON compartment_chunk_embeddings(session_id);
|
|
@@ -7327,7 +7519,7 @@ function initializeDatabase(db, busyTimeoutMs = BOOT_SQLITE_BUSY_TIMEOUT_MS) {
|
|
|
7327
7519
|
kind TEXT NOT NULL,
|
|
7328
7520
|
at_compartment INTEGER,
|
|
7329
7521
|
fields_json TEXT NOT NULL DEFAULT '{}',
|
|
7330
|
-
created_at INTEGER NOT NULL,
|
|
7522
|
+
created_at INTEGER NOT NULL, -- epoch ms (Date.now())
|
|
7331
7523
|
harness TEXT NOT NULL DEFAULT 'opencode'
|
|
7332
7524
|
);
|
|
7333
7525
|
CREATE INDEX IF NOT EXISTS idx_compartment_events_session
|
|
@@ -7356,7 +7548,7 @@ function initializeDatabase(db, busyTimeoutMs = BOOT_SQLITE_BUSY_TIMEOUT_MS) {
|
|
|
7356
7548
|
session_id TEXT NOT NULL,
|
|
7357
7549
|
category TEXT NOT NULL,
|
|
7358
7550
|
content TEXT NOT NULL,
|
|
7359
|
-
created_at INTEGER NOT NULL,
|
|
7551
|
+
created_at INTEGER NOT NULL, -- epoch ms (Date.now())
|
|
7360
7552
|
updated_at INTEGER NOT NULL,
|
|
7361
7553
|
harness TEXT NOT NULL DEFAULT 'opencode'
|
|
7362
7554
|
);
|
|
@@ -7375,7 +7567,7 @@ function initializeDatabase(db, busyTimeoutMs = BOOT_SQLITE_BUSY_TIMEOUT_MS) {
|
|
|
7375
7567
|
source_message_time INTEGER NOT NULL,
|
|
7376
7568
|
question_embedding BLOB,
|
|
7377
7569
|
question_embedding_model_id TEXT,
|
|
7378
|
-
created_at INTEGER NOT NULL,
|
|
7570
|
+
created_at INTEGER NOT NULL, -- epoch ms (Date.now())
|
|
7379
7571
|
UNIQUE(project_path, harness, session_id, source_start_message_id, source_end_message_id)
|
|
7380
7572
|
);
|
|
7381
7573
|
CREATE INDEX IF NOT EXISTS idx_primer_candidates_project_time
|
|
@@ -7398,7 +7590,7 @@ function initializeDatabase(db, busyTimeoutMs = BOOT_SQLITE_BUSY_TIMEOUT_MS) {
|
|
|
7398
7590
|
answer_refreshed_at INTEGER,
|
|
7399
7591
|
source_candidate_ids TEXT NOT NULL DEFAULT '[]',
|
|
7400
7592
|
source_candidate_provenance TEXT,
|
|
7401
|
-
created_at INTEGER NOT NULL,
|
|
7593
|
+
created_at INTEGER NOT NULL, -- epoch ms (Date.now())
|
|
7402
7594
|
updated_at INTEGER NOT NULL
|
|
7403
7595
|
);
|
|
7404
7596
|
CREATE INDEX IF NOT EXISTS idx_primers_project_status_observed
|
|
@@ -7511,7 +7703,7 @@ function initializeDatabase(db, busyTimeoutMs = BOOT_SQLITE_BUSY_TIMEOUT_MS) {
|
|
|
7511
7703
|
job_id TEXT,
|
|
7512
7704
|
cursor TEXT,
|
|
7513
7705
|
status TEXT NOT NULL DEFAULT 'pending',
|
|
7514
|
-
created_at INTEGER NOT NULL DEFAULT 0,
|
|
7706
|
+
created_at INTEGER NOT NULL DEFAULT 0, -- epoch ms (Date.now())
|
|
7515
7707
|
updated_at INTEGER NOT NULL DEFAULT 0,
|
|
7516
7708
|
UNIQUE(session_id, request_key)
|
|
7517
7709
|
);
|
|
@@ -7552,7 +7744,7 @@ function initializeDatabase(db, busyTimeoutMs = BOOT_SQLITE_BUSY_TIMEOUT_MS) {
|
|
|
7552
7744
|
shadow_epoch INTEGER NOT NULL DEFAULT 0,
|
|
7553
7745
|
corpus_hash TEXT NOT NULL DEFAULT '',
|
|
7554
7746
|
coverage_json TEXT NOT NULL DEFAULT '{}',
|
|
7555
|
-
created_at INTEGER NOT NULL DEFAULT 0,
|
|
7747
|
+
created_at INTEGER NOT NULL DEFAULT 0, -- epoch ms (Date.now())
|
|
7556
7748
|
UNIQUE(dedup_key, cohort_key)
|
|
7557
7749
|
);
|
|
7558
7750
|
CREATE INDEX IF NOT EXISTS idx_embedding_measurement_session
|
|
@@ -7975,7 +8167,7 @@ CREATE INDEX IF NOT EXISTS idx_dream_queue_pending ON dream_queue(started_at, en
|
|
|
7975
8167
|
importance_avg REAL,
|
|
7976
8168
|
discarded_last INTEGER NOT NULL DEFAULT 0,
|
|
7977
8169
|
legacy INTEGER NOT NULL DEFAULT 0,
|
|
7978
|
-
created_at INTEGER NOT NULL
|
|
8170
|
+
created_at INTEGER NOT NULL -- epoch ms (Date.now())
|
|
7979
8171
|
);
|
|
7980
8172
|
CREATE INDEX IF NOT EXISTS idx_historian_runs_session
|
|
7981
8173
|
ON historian_runs(session_id, created_at DESC);
|
|
@@ -8028,7 +8220,7 @@ CREATE INDEX IF NOT EXISTS idx_dream_queue_pending ON dream_queue(started_at, en
|
|
|
8028
8220
|
importance INTEGER NOT NULL DEFAULT 50,
|
|
8029
8221
|
episode_type TEXT,
|
|
8030
8222
|
pass_number INTEGER NOT NULL,
|
|
8031
|
-
created_at INTEGER NOT NULL,
|
|
8223
|
+
created_at INTEGER NOT NULL, -- epoch ms (Date.now())
|
|
8032
8224
|
harness TEXT NOT NULL DEFAULT 'opencode',
|
|
8033
8225
|
UNIQUE(session_id, sequence)
|
|
8034
8226
|
);
|
|
@@ -8039,7 +8231,7 @@ CREATE INDEX IF NOT EXISTS idx_dream_queue_pending ON dream_queue(started_at, en
|
|
|
8039
8231
|
category TEXT NOT NULL,
|
|
8040
8232
|
content TEXT NOT NULL,
|
|
8041
8233
|
pass_number INTEGER NOT NULL,
|
|
8042
|
-
created_at INTEGER NOT NULL,
|
|
8234
|
+
created_at INTEGER NOT NULL, -- epoch ms (Date.now())
|
|
8043
8235
|
harness TEXT NOT NULL DEFAULT 'opencode'
|
|
8044
8236
|
);
|
|
8045
8237
|
|
|
@@ -9520,7 +9712,7 @@ function refreshTailHygieneBaseline(input) {
|
|
|
9520
9712
|
for (let index = input.previous.baselineParts.length;index < measured.parts.length; index += 1) {
|
|
9521
9713
|
const part = measured.parts[index];
|
|
9522
9714
|
turnDeltaT += part.tokens;
|
|
9523
|
-
if (part.kind !== "toolOutput")
|
|
9715
|
+
if (part.kind !== "toolOutput" || !part.protected)
|
|
9524
9716
|
turnDeltaU += part.uTokens;
|
|
9525
9717
|
}
|
|
9526
9718
|
return {
|
|
@@ -10788,6 +10980,20 @@ function countRawSessionMessageOrdinalsFromDb(db, sessionId) {
|
|
|
10788
10980
|
)`).get(sessionId);
|
|
10789
10981
|
return typeof row?.count === "number" ? row.count : 0;
|
|
10790
10982
|
}
|
|
10983
|
+
function readRawSessionMessageIdOrdinalsFromDb(db, sessionId) {
|
|
10984
|
+
const messageRows = db.prepare("SELECT id, data FROM message WHERE session_id = ? ORDER BY time_created ASC, id ASC").all(sessionId).filter(isRawMessageRow);
|
|
10985
|
+
const ordinalById = new Map;
|
|
10986
|
+
let ordinal = 0;
|
|
10987
|
+
for (const row of messageRows) {
|
|
10988
|
+
const info = parseJsonRecord(row.data);
|
|
10989
|
+
if (isRawCompactionSummaryInfo(info))
|
|
10990
|
+
continue;
|
|
10991
|
+
ordinal += 1;
|
|
10992
|
+
if (info)
|
|
10993
|
+
ordinalById.set(row.id, ordinal);
|
|
10994
|
+
}
|
|
10995
|
+
return ordinalById;
|
|
10996
|
+
}
|
|
10791
10997
|
function readRawSessionMessageOrdinalPageFromDb(db, sessionId, after, limit) {
|
|
10792
10998
|
const pageSize = Math.max(1, Math.floor(limit));
|
|
10793
10999
|
const rows = (after ? db.prepare(`SELECT id, data, time_created
|
|
@@ -12094,6 +12300,17 @@ function getRawSessionStoredMessageCount(sessionId) {
|
|
|
12094
12300
|
return 0;
|
|
12095
12301
|
return withReadOnlySessionDb((db) => countStoredRawSessionMessagesFromDb(db, sessionId));
|
|
12096
12302
|
}
|
|
12303
|
+
function readRawSessionMessageIdOrdinals(sessionId) {
|
|
12304
|
+
const provider = sessionProviders.get(sessionId);
|
|
12305
|
+
if (provider?.readMessageIdOrdinals)
|
|
12306
|
+
return provider.readMessageIdOrdinals();
|
|
12307
|
+
if (provider) {
|
|
12308
|
+
return new Map(provider.readMessages().map((message) => [message.id, message.ordinal]));
|
|
12309
|
+
}
|
|
12310
|
+
if (!openCodeDbExists())
|
|
12311
|
+
return new Map;
|
|
12312
|
+
return withReadOnlySessionDb((db) => readRawSessionMessageIdOrdinalsFromDb(db, sessionId));
|
|
12313
|
+
}
|
|
12097
12314
|
function readRawSessionMessagePartsById(sessionId, messageId, onQuery) {
|
|
12098
12315
|
const provider = sessionProviders.get(sessionId);
|
|
12099
12316
|
if (provider?.readMessagePartsById)
|
|
@@ -12284,6 +12501,14 @@ function readSessionChunk(sessionId, tokenBudget, offset = 1, eligibleEndOrdinal
|
|
|
12284
12501
|
const totalMessageCount = getCachedAbsoluteMessageCount(sessionId) ?? messages.length;
|
|
12285
12502
|
const startOrdinal = Math.max(1, offset);
|
|
12286
12503
|
const completedToolArcs = buildToolArcs(messages).flatMap((arc) => arc.resOrdinal === null ? [] : [{ start: arc.invOrdinal, end: arc.resOrdinal }]);
|
|
12504
|
+
const completedToolComponents = [];
|
|
12505
|
+
for (const arc of completedToolArcs) {
|
|
12506
|
+
const component = completedToolComponents[completedToolComponents.length - 1];
|
|
12507
|
+
if (component && arc.start <= component.end)
|
|
12508
|
+
component.end = Math.max(component.end, arc.end);
|
|
12509
|
+
else
|
|
12510
|
+
completedToolComponents.push({ ...arc });
|
|
12511
|
+
}
|
|
12287
12512
|
const lines = [];
|
|
12288
12513
|
const lineMeta = [];
|
|
12289
12514
|
const flushedToolOnlyBlocks = [];
|
|
@@ -12297,6 +12522,25 @@ function readSessionChunk(sessionId, tokenBudget, offset = 1, eligibleEndOrdinal
|
|
|
12297
12522
|
let pendingNoiseMeta = [];
|
|
12298
12523
|
let commitClusters = 0;
|
|
12299
12524
|
let lastFlushedRole = "";
|
|
12525
|
+
let admittedOversizeComponentEnd = null;
|
|
12526
|
+
let currentBlockApproxTokens = 0;
|
|
12527
|
+
let formattedBudgetCrossed = false;
|
|
12528
|
+
let sourceCharacters = 0;
|
|
12529
|
+
const toolResultBoundaries = [];
|
|
12530
|
+
function pinComponentWhenFormattedBudgetCrosses(ordinal, appendedText) {
|
|
12531
|
+
if (admittedOversizeComponentEnd !== null || formattedBudgetCrossed || !currentBlock)
|
|
12532
|
+
return;
|
|
12533
|
+
currentBlockApproxTokens += estimateTokens(appendedText) + (currentBlock.parts.length > 1 ? 1 : 0);
|
|
12534
|
+
if (totalTokens + currentBlockApproxTokens + 64 <= tokenBudget)
|
|
12535
|
+
return;
|
|
12536
|
+
const previewTokens = totalTokens + estimateTokens(formatBlock(currentBlock));
|
|
12537
|
+
if (previewTokens <= tokenBudget)
|
|
12538
|
+
return;
|
|
12539
|
+
formattedBudgetCrossed = true;
|
|
12540
|
+
const component = completedToolComponents.find((candidate) => candidate.start <= ordinal && candidate.end >= ordinal);
|
|
12541
|
+
if (component)
|
|
12542
|
+
admittedOversizeComponentEnd = component.end;
|
|
12543
|
+
}
|
|
12300
12544
|
function recordFilteredNoise(meta) {
|
|
12301
12545
|
pendingNoiseMeta.push(meta);
|
|
12302
12546
|
if (!currentBlock) {
|
|
@@ -12323,7 +12567,23 @@ function readSessionChunk(sessionId, tokenBudget, offset = 1, eligibleEndOrdinal
|
|
|
12323
12567
|
highestScannedOrdinal = Math.max(highestScannedOrdinal, lastOrdinal);
|
|
12324
12568
|
lastMessageId = currentBlock.meta[currentBlock.meta.length - 1]?.messageId ?? "";
|
|
12325
12569
|
messagesProcessed += currentBlock.meta.length;
|
|
12570
|
+
const lineStart = sourceCharacters + (lines.length > 0 ? 1 : 0);
|
|
12571
|
+
const renderedParts = currentBlock.parts.join(" / ");
|
|
12572
|
+
let partOffset = lineStart + (blockText.length - renderedParts.length);
|
|
12573
|
+
for (let index = 0;index < currentBlock.parts.length; index++) {
|
|
12574
|
+
const part = currentBlock.parts[index] ?? "";
|
|
12575
|
+
const partMeta = currentBlock.partMeta[index];
|
|
12576
|
+
if (partMeta && partMeta.toolResultBodyTokens > 0) {
|
|
12577
|
+
toolResultBoundaries.push({
|
|
12578
|
+
ordinal: partMeta.ordinal,
|
|
12579
|
+
sourceOffset: partOffset,
|
|
12580
|
+
bodyTokens: partMeta.toolResultBodyTokens
|
|
12581
|
+
});
|
|
12582
|
+
}
|
|
12583
|
+
partOffset += part.length + (index + 1 < currentBlock.parts.length ? 3 : 0);
|
|
12584
|
+
}
|
|
12326
12585
|
lines.push(blockText);
|
|
12586
|
+
sourceCharacters = lineStart + blockText.length;
|
|
12327
12587
|
lineMeta.push(...currentBlock.meta);
|
|
12328
12588
|
totalTokens += blockTokens;
|
|
12329
12589
|
if (currentBlock.isToolOnly) {
|
|
@@ -12333,11 +12593,15 @@ function readSessionChunk(sessionId, tokenBudget, offset = 1, eligibleEndOrdinal
|
|
|
12333
12593
|
});
|
|
12334
12594
|
}
|
|
12335
12595
|
currentBlock = null;
|
|
12596
|
+
currentBlockApproxTokens = 0;
|
|
12336
12597
|
return true;
|
|
12337
12598
|
}
|
|
12338
12599
|
for (const msg of messages) {
|
|
12339
12600
|
if (eligibleEndOrdinal !== undefined && msg.ordinal >= eligibleEndOrdinal)
|
|
12340
12601
|
break;
|
|
12602
|
+
if (admittedOversizeComponentEnd !== null && msg.ordinal > admittedOversizeComponentEnd) {
|
|
12603
|
+
break;
|
|
12604
|
+
}
|
|
12341
12605
|
if (msg.ordinal < startOrdinal)
|
|
12342
12606
|
continue;
|
|
12343
12607
|
const meta = { ordinal: msg.ordinal, messageId: msg.id };
|
|
@@ -12351,6 +12615,10 @@ function readSessionChunk(sessionId, tokenBudget, offset = 1, eligibleEndOrdinal
|
|
|
12351
12615
|
if (currentBlock && currentBlock.role === "A") {
|
|
12352
12616
|
currentBlock.endOrdinal = msg.ordinal;
|
|
12353
12617
|
currentBlock.parts.push(tcText);
|
|
12618
|
+
currentBlock.partMeta.push({
|
|
12619
|
+
ordinal: msg.ordinal,
|
|
12620
|
+
toolResultBodyTokens: extractToolResultBodyTokens(msg.parts)
|
|
12621
|
+
});
|
|
12354
12622
|
currentBlock.meta.push(...pendingNoiseMeta, meta);
|
|
12355
12623
|
pendingNoiseMeta = [];
|
|
12356
12624
|
} else {
|
|
@@ -12361,12 +12629,19 @@ function readSessionChunk(sessionId, tokenBudget, offset = 1, eligibleEndOrdinal
|
|
|
12361
12629
|
startOrdinal: pendingNoiseMeta[0]?.ordinal ?? msg.ordinal,
|
|
12362
12630
|
endOrdinal: msg.ordinal,
|
|
12363
12631
|
parts: [tcText],
|
|
12632
|
+
partMeta: [
|
|
12633
|
+
{
|
|
12634
|
+
ordinal: msg.ordinal,
|
|
12635
|
+
toolResultBodyTokens: extractToolResultBodyTokens(msg.parts)
|
|
12636
|
+
}
|
|
12637
|
+
],
|
|
12364
12638
|
meta: [...pendingNoiseMeta, meta],
|
|
12365
12639
|
commitHashes: [],
|
|
12366
12640
|
isToolOnly: true
|
|
12367
12641
|
};
|
|
12368
12642
|
pendingNoiseMeta = [];
|
|
12369
12643
|
}
|
|
12644
|
+
pinComponentWhenFormattedBudgetCrosses(msg.ordinal, tcText);
|
|
12370
12645
|
continue;
|
|
12371
12646
|
}
|
|
12372
12647
|
const role = compactRole(msg.role);
|
|
@@ -12383,11 +12658,16 @@ function readSessionChunk(sessionId, tokenBudget, offset = 1, eligibleEndOrdinal
|
|
|
12383
12658
|
if (currentBlock && currentBlock.role === role) {
|
|
12384
12659
|
currentBlock.endOrdinal = msg.ordinal;
|
|
12385
12660
|
currentBlock.parts.push(text);
|
|
12661
|
+
currentBlock.partMeta.push({
|
|
12662
|
+
ordinal: msg.ordinal,
|
|
12663
|
+
toolResultBodyTokens: extractToolResultBodyTokens(msg.parts)
|
|
12664
|
+
});
|
|
12386
12665
|
currentBlock.meta.push(...pendingNoiseMeta, meta);
|
|
12387
12666
|
currentBlock.commitHashes = mergeCommitHashes(currentBlock.commitHashes, compacted.commitHashes);
|
|
12388
12667
|
if (msgHasNarrative)
|
|
12389
12668
|
currentBlock.isToolOnly = false;
|
|
12390
12669
|
pendingNoiseMeta = [];
|
|
12670
|
+
pinComponentWhenFormattedBudgetCrosses(msg.ordinal, text);
|
|
12391
12671
|
continue;
|
|
12392
12672
|
}
|
|
12393
12673
|
if (!flushCurrentBlock())
|
|
@@ -12397,11 +12677,18 @@ function readSessionChunk(sessionId, tokenBudget, offset = 1, eligibleEndOrdinal
|
|
|
12397
12677
|
startOrdinal: pendingNoiseMeta[0]?.ordinal ?? msg.ordinal,
|
|
12398
12678
|
endOrdinal: msg.ordinal,
|
|
12399
12679
|
parts: [text],
|
|
12680
|
+
partMeta: [
|
|
12681
|
+
{
|
|
12682
|
+
ordinal: msg.ordinal,
|
|
12683
|
+
toolResultBodyTokens: extractToolResultBodyTokens(msg.parts)
|
|
12684
|
+
}
|
|
12685
|
+
],
|
|
12400
12686
|
meta: [...pendingNoiseMeta, meta],
|
|
12401
12687
|
commitHashes: [...compacted.commitHashes],
|
|
12402
12688
|
isToolOnly: !msgHasNarrative
|
|
12403
12689
|
};
|
|
12404
12690
|
pendingNoiseMeta = [];
|
|
12691
|
+
pinComponentWhenFormattedBudgetCrosses(msg.ordinal, text);
|
|
12405
12692
|
}
|
|
12406
12693
|
if (flushCurrentBlock() && pendingNoiseMeta.length > 0) {
|
|
12407
12694
|
highestScannedOrdinal = Math.max(highestScannedOrdinal, pendingNoiseMeta[pendingNoiseMeta.length - 1]?.ordinal ?? highestScannedOrdinal);
|
|
@@ -12432,7 +12719,8 @@ function readSessionChunk(sessionId, tokenBudget, offset = 1, eligibleEndOrdinal
|
|
|
12432
12719
|
...messagesProcessed === 0 && text.length === 0 ? { filteredNoiseLines: pendingNoiseMeta } : {},
|
|
12433
12720
|
commitClusterCount: commitClusters,
|
|
12434
12721
|
toolOnlyRanges,
|
|
12435
|
-
completedToolArcs
|
|
12722
|
+
completedToolArcs,
|
|
12723
|
+
toolResultBoundaries
|
|
12436
12724
|
};
|
|
12437
12725
|
}
|
|
12438
12726
|
function readRawSessionSeedTail(sessionId, boundaryId, onQuery) {
|
|
@@ -12853,19 +13141,25 @@ function indexMessagesAfterOrdinal(db, sessionId, messages, _lastIndexedOrdinal,
|
|
|
12853
13141
|
}
|
|
12854
13142
|
return inserted;
|
|
12855
13143
|
}
|
|
12856
|
-
function
|
|
12857
|
-
|
|
13144
|
+
function openCodeSweepHarness() {
|
|
13145
|
+
const harness = getHarness();
|
|
13146
|
+
if (harness === "opencode" || harness === "opencode2")
|
|
13147
|
+
return harness;
|
|
13148
|
+
throw new Error(`OpenCode orphan sweep cannot read a ${harness} host store`);
|
|
13149
|
+
}
|
|
13150
|
+
function getMessageHistoryOrphanSweepState(db, harness) {
|
|
13151
|
+
return db.prepare("SELECT cursor_session_id, last_swept_at FROM message_history_orphan_sweep WHERE harness = ?").get(harness) ?? {};
|
|
12858
13152
|
}
|
|
12859
|
-
function persistMessageHistoryOrphanSweepState(db, cursor, lastSweptAt) {
|
|
13153
|
+
function persistMessageHistoryOrphanSweepState(db, cursor, lastSweptAt, harness) {
|
|
12860
13154
|
db.prepare(`INSERT INTO message_history_orphan_sweep (harness, cursor_session_id, last_swept_at)
|
|
12861
|
-
|
|
13155
|
+
VALUES (?, ?, ?)
|
|
12862
13156
|
ON CONFLICT(harness) DO UPDATE SET
|
|
12863
13157
|
cursor_session_id = excluded.cursor_session_id,
|
|
12864
|
-
last_swept_at = excluded.last_swept_at`).run(cursor, lastSweptAt);
|
|
13158
|
+
last_swept_at = excluded.last_swept_at`).run(harness, cursor, lastSweptAt);
|
|
12865
13159
|
}
|
|
12866
|
-
function getOpenCodeSessionScopedCandidateSourceSql() {
|
|
13160
|
+
function getOpenCodeSessionScopedCandidateSourceSql(harness) {
|
|
12867
13161
|
return SESSION_SCOPED_TABLES.filter((definition) => definition.harnessScoped === true).map((definition) => {
|
|
12868
|
-
const predicates = ["session_id IS NOT NULL",
|
|
13162
|
+
const predicates = ["session_id IS NOT NULL", `harness = '${harness}'`];
|
|
12869
13163
|
if (definition.extraPredicate)
|
|
12870
13164
|
predicates.push(definition.extraPredicate);
|
|
12871
13165
|
return `SELECT session_id FROM ${definition.table} WHERE ${predicates.join(" AND ")}`;
|
|
@@ -12879,7 +13173,8 @@ function sweepOrphanedOpenCodeMessageIndexes(db, openReadableOpenCodeDb, options
|
|
|
12879
13173
|
const safetyAgeMs = Math.max(0, options.safetyAgeMs ?? MESSAGE_HISTORY_ORPHAN_SAFETY_AGE_MS);
|
|
12880
13174
|
const cooldownMs = Math.max(0, options.cooldownMs ?? MESSAGE_HISTORY_ORPHAN_SWEEP_COOLDOWN_MS);
|
|
12881
13175
|
const unavailableReprobeMs = Math.max(cooldownMs, options.unavailableReprobeMs ?? MESSAGE_HISTORY_ORPHAN_UNAVAILABLE_REPROBE_MS);
|
|
12882
|
-
const
|
|
13176
|
+
const harness = openCodeSweepHarness();
|
|
13177
|
+
const state = getMessageHistoryOrphanSweepState(db, harness);
|
|
12883
13178
|
const cursor = typeof state.cursor_session_id === "string" ? state.cursor_session_id : "";
|
|
12884
13179
|
if (typeof state.last_swept_at === "number" && state.last_swept_at + cooldownMs > now) {
|
|
12885
13180
|
return { status: "cooldown", scanned: 0, deleted: 0, cursor };
|
|
@@ -12891,12 +13186,12 @@ function sweepOrphanedOpenCodeMessageIndexes(db, openReadableOpenCodeDb, options
|
|
|
12891
13186
|
openCodeDb = null;
|
|
12892
13187
|
}
|
|
12893
13188
|
if (!openCodeDb) {
|
|
12894
|
-
persistMessageHistoryOrphanSweepState(db, cursor, now + unavailableReprobeMs - cooldownMs);
|
|
13189
|
+
persistMessageHistoryOrphanSweepState(db, cursor, now + unavailableReprobeMs - cooldownMs, harness);
|
|
12895
13190
|
return { status: "source_unavailable", scanned: 0, deleted: 0, cursor };
|
|
12896
13191
|
}
|
|
12897
13192
|
try {
|
|
12898
13193
|
const cutoff = now - safetyAgeMs;
|
|
12899
|
-
const candidateSourceSql = getOpenCodeSessionScopedCandidateSourceSql();
|
|
13194
|
+
const candidateSourceSql = getOpenCodeSessionScopedCandidateSourceSql(harness);
|
|
12900
13195
|
const candidates = db.prepare(`SELECT session_id
|
|
12901
13196
|
FROM (${candidateSourceSql}) AS session_candidates
|
|
12902
13197
|
WHERE session_id > ?
|
|
@@ -12904,7 +13199,7 @@ function sweepOrphanedOpenCodeMessageIndexes(db, openReadableOpenCodeDb, options
|
|
|
12904
13199
|
SELECT 1
|
|
12905
13200
|
FROM message_history_index
|
|
12906
13201
|
WHERE message_history_index.session_id = session_candidates.session_id
|
|
12907
|
-
|
|
13202
|
+
AND message_history_index.harness = '${harness}'
|
|
12908
13203
|
AND message_history_index.updated_at > ?
|
|
12909
13204
|
)
|
|
12910
13205
|
ORDER BY session_id ASC
|
|
@@ -12925,13 +13220,13 @@ function sweepOrphanedOpenCodeMessageIndexes(db, openReadableOpenCodeDb, options
|
|
|
12925
13220
|
SELECT 1
|
|
12926
13221
|
FROM message_history_index
|
|
12927
13222
|
WHERE message_history_index.session_id = session_candidates.session_id
|
|
12928
|
-
|
|
13223
|
+
AND message_history_index.harness = '${harness}'
|
|
12929
13224
|
AND message_history_index.updated_at > ?
|
|
12930
13225
|
)
|
|
12931
13226
|
LIMIT 1`);
|
|
12932
13227
|
const eligibleSessionIds = missingSessionIds.filter((sessionId) => stillEligible.get(sessionId, cutoff));
|
|
12933
|
-
deleted = deleteSessionScopedRows(db, eligibleSessionIds,
|
|
12934
|
-
persistMessageHistoryOrphanSweepState(db, nextCursor, completedAt);
|
|
13228
|
+
deleted = deleteSessionScopedRows(db, eligibleSessionIds, harness);
|
|
13229
|
+
persistMessageHistoryOrphanSweepState(db, nextCursor, completedAt, harness);
|
|
12935
13230
|
db.exec("COMMIT");
|
|
12936
13231
|
committed = true;
|
|
12937
13232
|
logSlowWriteTransaction("message_index_orphan_sweep", transactionStartedAt);
|
|
@@ -18455,6 +18750,7 @@ var DEFAULT_EXECUTE_THRESHOLD_PERCENTAGE = 65;
|
|
|
18455
18750
|
var EXECUTE_THRESHOLD_CAP_MESSAGE = "execute_threshold is capped at 90% for cache safety: output capacity is reserved from the usable context window, and the remaining 10% absorbs mid-turn growth before the absolute 95% emergency wall. Use a value between 20 and 90.";
|
|
18456
18751
|
var DEFAULT_HISTORIAN_TIMEOUT_MS = 600000;
|
|
18457
18752
|
var DEFAULT_HISTORY_BUDGET_PERCENTAGE = 0.15;
|
|
18753
|
+
var PROTECTED_TOKENS_MIN = 4000;
|
|
18458
18754
|
var DEFAULT_LOCAL_EMBEDDING_MODEL = "Xenova/all-MiniLM-L6-v2";
|
|
18459
18755
|
var PiThinkingLevelSchema = _enum(["off", "minimal", "low", "medium", "high", "xhigh", "max"]).optional();
|
|
18460
18756
|
var OmpThinkingLevelSchema = _enum(["off", "minimal", "low", "medium", "high", "xhigh", "max", "inherit", "auto"]).optional();
|
|
@@ -18824,8 +19120,8 @@ var MagicContextConfigSchema = object({
|
|
|
18824
19120
|
smart_notes: object({
|
|
18825
19121
|
retina_handoff: boolean2().default(false).describe("When true, dreamer skips smart notes whose surface conditions compiled to retina provider configs at authoring time. Default false keeps both paths active until the retina consumer is deployed.")
|
|
18826
19122
|
}).default({ retina_handoff: false }).describe("Smart-note ownership transition controls."),
|
|
18827
|
-
cache_ttl: union([string(), object({ default: string() }).catchall(string())]).default("5m").describe(`How long Magic Context assumes the provider's cached prefix stays valid. This is MC's own deferral gate — it does not change the provider's actual cache lifetime. String (e.g. "5m", "1h", "30s") or per-model object ({ default: "5m", "model
|
|
18828
|
-
prompt_surface: PromptSurfaceConfigSchema.default({ default: "full" }).describe("Prompt-surface presets: default is full; models use bare model IDs, provider/model, or provider/* routing keys. Guidance and tool-description overrides are user-level only.
|
|
19123
|
+
cache_ttl: union([string(), object({ default: string() }).catchall(string())]).default("5m").describe(`How long Magic Context assumes the provider's cached prefix stays valid. This is MC's own deferral gate — it does not change the provider's actual cache lifetime. String (e.g. "5m", "1h", "30s") or per-model object ({ default: "5m", "provider/model": "1h", "provider/*": "never" }); keys resolve most-specific first (exact provider/model, bare model ID, shorter dash-prefixes, then the provider/* wildcard, then default). Set to "never" to mean MC never assumes expiry (for lanes kept warm externally by a cache-keep tool) — disables the idle-TTL heuristic so MC never initiates a rebuild based on elapsed time. Provider-side extended TTL is a separate request-level concern (cache_control: { ttl } in the request body).`),
|
|
19124
|
+
prompt_surface: PromptSurfaceConfigSchema.default({ default: "full" }).describe("Prompt-surface presets: default is full; models use bare model IDs, provider/model, or provider/* routing keys. Guidance and tool-description overrides are user-level only. OpenCode 1.x, Pi, and OMP register tool descriptions once per process (they follow the default preset). OpenCode 2 rewrites the five ctx_* descriptions per request from the draft model."),
|
|
18829
19125
|
output_reserve: union([
|
|
18830
19126
|
number2().min(0),
|
|
18831
19127
|
object({ default: number2().min(0) }).catchall(number2().min(0))
|
|
@@ -18841,7 +19137,7 @@ var MagicContextConfigSchema = object({
|
|
|
18841
19137
|
execute_threshold_tokens: object({
|
|
18842
19138
|
default: number2().min(5000).max(2000000).optional()
|
|
18843
19139
|
}).catchall(number2().min(5000).max(2000000)).optional().describe("Absolute token thresholds per model. When matched, overrides execute_threshold_percentage for that model. Accepts `default` for all models or per-model keys. Values above 90% × context_limit are clamped with a warning log. Min 5_000, max 2_000_000."),
|
|
18844
|
-
protected_tokens: number2().int().min(
|
|
19140
|
+
protected_tokens: number2().int().min(PROTECTED_TOKENS_MIN).max(1e6).optional().describe("Positive integer token floor to protect from automatic reclaim (min: 4_000, max: 1_000_000). When omitted, the derived default is clamp(round(0.05 × usableSoft), min(16_000, round(0.08 × usableSoft)), 64_000)."),
|
|
18845
19141
|
protected_tags: unknown().optional().describe("Deprecated: number of recent tags to protect. Ignored for behaviour; use protected_tokens instead.").meta({ deprecated: true }),
|
|
18846
19142
|
clear_reasoning_age: number2().min(10).default(50).describe("Clear reasoning/thinking blocks older than N tags (default: 50)"),
|
|
18847
19143
|
history_budget_percentage: number2().min(0.05).max(0.5).default(DEFAULT_HISTORY_BUDGET_PERCENTAGE).describe("Fraction of usable context (context_limit × execute_threshold) reserved for the session history block (default: 0.15)"),
|
|
@@ -22457,9 +22753,9 @@ function migrateMagicContextConfigLocations(directory, logger) {
|
|
|
22457
22753
|
}
|
|
22458
22754
|
|
|
22459
22755
|
// src/tools/light-descriptions.ts
|
|
22460
|
-
var CTX_REDUCE_LIGHT_DESCRIPTION = `
|
|
22756
|
+
var CTX_REDUCE_LIGHT_DESCRIPTION = `Marking QUEUES content for release. It stays fully visible to you until it is actually released, which may be the next turn or many turns later. Newest tags stay protected until they age out. Release leaves a placeholder; recover only by rerunning the source or recovery tool. Mark only finished material. Mark analyzed, redundant, saved, or confirmatory outputs; keep user messages, unresolved errors, unextracted evidence, and exact wording. NEVER blanket-mark a large range: review every tag first.`;
|
|
22461
22757
|
var CTX_EXPAND_LIGHT_DESCRIPTION = `For ctx_expand users, recover compacted conversation by passing a session-history heading's inclusive start/end ordinals. Results are raw [N] U:/A: transcript capped near 15K tokens; oversized ranges return the head and a continuation. Use verbose=true to list each message ordinal, part previews, and tool-output sizes; use message=N for one complete stored message and its tool exchanges. NEVER expand ranges after the last compartment because that live tail is already visible.`;
|
|
22462
|
-
var CTX_NOTE_LIGHT_DESCRIPTION = `For ctx_note: write saves, read lists, update changes, dismiss retires
|
|
22758
|
+
var CTX_NOTE_LIGHT_DESCRIPTION = `For ctx_note: write saves, read lists, update changes one note (note_ids=[N]), dismiss retires 1–50 (note_ids); surface_condition makes a smart note. Smart-note conditions must be externally verifiable via GitHub, disk, git, or web—not this conversation or future actions.`;
|
|
22463
22759
|
var CTX_MEMORY_LIGHT_DESCRIPTION = `For ctx_memory users, write one standalone durable fact with category and content; update one ID, archive one or more IDs, merge two or more IDs, or get one to twenty numeric IDs. get reads memories in every status; list remains dreamer-only, so primary agents must NEVER assume bulk-list access.`;
|
|
22464
22760
|
var CTX_SEARCH_LIGHT_DESCRIPTION = `For ctx_search users, retrieve only hidden recall: memories not in <project-memory>, compacted messages outside the live tail, commits, and notes; phrase query as a question carrying exact terms. Omit sources for broad search; select memory, message, git_commit, or note, or pass memory IDs directly. Hits expand through ctx_expand.`;
|
|
22465
22761
|
|
|
@@ -22539,8 +22835,8 @@ function createPromptSurfaceRuntime(options) {
|
|
|
22539
22835
|
return content;
|
|
22540
22836
|
};
|
|
22541
22837
|
return {
|
|
22542
|
-
resolveRegistration(config) {
|
|
22543
|
-
const { preset } = resolvePromptSurface(config,
|
|
22838
|
+
resolveRegistration(config, modelKey) {
|
|
22839
|
+
const { preset } = resolvePromptSurface(config, modelKey);
|
|
22544
22840
|
const overrides = config?.tool_descriptions ?? {};
|
|
22545
22841
|
for (const [toolId, description] of Object.entries(overrides)) {
|
|
22546
22842
|
if (!PROMPT_SURFACE_TOOL_ID_SET.has(toolId)) {
|
|
@@ -27995,6 +28291,7 @@ async function injectWasmOrt() {
|
|
|
27995
28291
|
try {
|
|
27996
28292
|
const { module: ortWeb, entryPath } = await importWasmOrtForRuntime();
|
|
27997
28293
|
if (ortWeb.env?.wasm) {
|
|
28294
|
+
ortWeb.env.wasm.numThreads = 1;
|
|
27998
28295
|
ortWeb.env.wasm.wasmPaths = `${pathToFileURL2(dirname5(entryPath)).href}/`;
|
|
27999
28296
|
}
|
|
28000
28297
|
globalThis[Symbol.for("onnxruntime")] = ortWeb;
|
|
@@ -30116,6 +30413,26 @@ function registerProjectInObservationMode(db, projectIdentity, sourceDirectory,
|
|
|
30116
30413
|
disposeProvider(prior?.provider ?? null);
|
|
30117
30414
|
return snapshotFor(registration);
|
|
30118
30415
|
}
|
|
30416
|
+
function unregisterProjectShadowEmbedding(projectIdentity) {
|
|
30417
|
+
const shadow = shadowRegistrations.get(projectIdentity);
|
|
30418
|
+
shadowRegistrations.delete(projectIdentity);
|
|
30419
|
+
dbForShadowQueue.delete(projectIdentity);
|
|
30420
|
+
pendingShadowBackfills.delete(projectIdentity);
|
|
30421
|
+
for (let index = shadowQueue.length - 1;index >= 0; index -= 1) {
|
|
30422
|
+
if (shadowQueue[index].projectIdentity === projectIdentity)
|
|
30423
|
+
shadowQueue.splice(index, 1);
|
|
30424
|
+
}
|
|
30425
|
+
for (const scope of ["memory", "commit", "chunk"]) {
|
|
30426
|
+
const key = `${projectIdentity}:${scope}`;
|
|
30427
|
+
shadowBackfillLastIds.delete(key);
|
|
30428
|
+
shadowBackfillStopReasons.delete(key);
|
|
30429
|
+
shadowBackfillLastWriteOutcomes.delete(key);
|
|
30430
|
+
}
|
|
30431
|
+
const primaryProvider = projectRegistrations.get(projectIdentity)?.provider ?? null;
|
|
30432
|
+
if (shadow?.provider && shadow.provider !== primaryProvider) {
|
|
30433
|
+
disposeProvider(shadow.provider);
|
|
30434
|
+
}
|
|
30435
|
+
}
|
|
30119
30436
|
function getProjectEmbeddingSnapshot(projectIdentity) {
|
|
30120
30437
|
const registration = projectRegistrations.get(projectIdentity);
|
|
30121
30438
|
return registration ? snapshotFor(registration) : null;
|
|
@@ -31369,6 +31686,12 @@ function getWritableOpenCodeDb() {
|
|
|
31369
31686
|
throw new Error(`OpenCode database not found at ${dbPath} (source=${resolution.source}; is OpenCode installed?)`);
|
|
31370
31687
|
}
|
|
31371
31688
|
const db = new Database(dbPath);
|
|
31689
|
+
try {
|
|
31690
|
+
assertOpenCodeStoreGeneration(db, "v1", dbPath);
|
|
31691
|
+
} catch (error) {
|
|
31692
|
+
closeQuietly(db);
|
|
31693
|
+
throw error;
|
|
31694
|
+
}
|
|
31372
31695
|
db.exec("PRAGMA busy_timeout=5000");
|
|
31373
31696
|
db.exec("PRAGMA journal_mode=WAL");
|
|
31374
31697
|
cachedWriteDb = { path: dbPath, db };
|
|
@@ -36962,17 +37285,65 @@ function persistFilteredNoise(db, sessionId, chunk, eligibleEnd) {
|
|
|
36962
37285
|
}
|
|
36963
37286
|
|
|
36964
37287
|
// src/hooks/magic-context/producer-window-guard.ts
|
|
36965
|
-
var PRODUCER_WINDOW_REFUSAL_MARGIN = 0.
|
|
37288
|
+
var PRODUCER_WINDOW_REFUSAL_MARGIN = 0.03;
|
|
37289
|
+
var HISTORIAN_TRUNCATION_MARKER = "[… tokens truncated by Magic Context to fit the historian window …]";
|
|
37290
|
+
function producerInputTokenLimit(contextLimitTokens, maxOutputTokens) {
|
|
37291
|
+
if (typeof contextLimitTokens !== "number" || !Number.isFinite(contextLimitTokens) || contextLimitTokens <= 0 || !Number.isFinite(maxOutputTokens) || maxOutputTokens < 0) {
|
|
37292
|
+
return;
|
|
37293
|
+
}
|
|
37294
|
+
const usableInputTokens = Math.max(0, Math.floor(contextLimitTokens - maxOutputTokens));
|
|
37295
|
+
return Math.max(0, Math.floor(usableInputTokens * (1 - PRODUCER_WINDOW_REFUSAL_MARGIN)));
|
|
37296
|
+
}
|
|
36966
37297
|
function producerWindowFailureReason(input) {
|
|
36967
37298
|
const { producerSourceTokens, contextLimitTokens, maxOutputTokens } = input;
|
|
36968
|
-
|
|
37299
|
+
const producerInputLimitTokens = producerInputTokenLimit(contextLimitTokens, maxOutputTokens);
|
|
37300
|
+
if (producerInputLimitTokens === undefined || typeof contextLimitTokens !== "number" || !Number.isFinite(producerSourceTokens) || producerSourceTokens <= 0) {
|
|
36969
37301
|
return null;
|
|
36970
37302
|
}
|
|
36971
37303
|
const usableInputTokens = Math.max(0, Math.floor(contextLimitTokens - maxOutputTokens));
|
|
36972
|
-
|
|
36973
|
-
if (producerSourceTokens < refusalThreshold)
|
|
37304
|
+
if (producerSourceTokens <= producerInputLimitTokens)
|
|
36974
37305
|
return null;
|
|
36975
|
-
return `producer_source_exceeds_window producer_source_tokens=${Math.round(producerSourceTokens)} usable_input_tokens=${usableInputTokens} context_limit_tokens=${Math.round(contextLimitTokens)} max_output_tokens=${Math.round(maxOutputTokens)}
|
|
37306
|
+
return `producer_source_exceeds_window producer_source_tokens=${Math.round(producerSourceTokens)} usable_input_tokens=${usableInputTokens} producer_input_limit_tokens=${producerInputLimitTokens} context_limit_tokens=${Math.round(contextLimitTokens)} max_output_tokens=${Math.round(maxOutputTokens)} estimator_margin=${PRODUCER_WINDOW_REFUSAL_MARGIN}`;
|
|
37307
|
+
}
|
|
37308
|
+
function splitMarkerPair() {
|
|
37309
|
+
return `
|
|
37310
|
+
${HISTORIAN_TRUNCATION_MARKER}
|
|
37311
|
+
${HISTORIAN_TRUNCATION_MARKER}
|
|
37312
|
+
`;
|
|
37313
|
+
}
|
|
37314
|
+
function fitAtomicHistorianSourceToProducerWindow(args) {
|
|
37315
|
+
const producerInputLimitTokens = producerInputTokenLimit(args.contextLimitTokens, args.maxOutputTokens);
|
|
37316
|
+
const originalTokens = estimateTokens(args.text);
|
|
37317
|
+
if (producerInputLimitTokens === undefined || originalTokens < producerInputLimitTokens || producerInputLimitTokens <= 0) {
|
|
37318
|
+
return { text: args.text, producerInputLimitTokens, removedTokens: 0 };
|
|
37319
|
+
}
|
|
37320
|
+
const boundary = [...args.resultBoundaries ?? []].filter((candidate) => Number.isFinite(candidate.sourceOffset) && candidate.sourceOffset > 0 && candidate.sourceOffset < args.text.length).sort((a, b) => b.bodyTokens - a.bodyTokens || a.ordinal - b.ordinal)[0];
|
|
37321
|
+
const splitOffset = boundary?.sourceOffset ?? Math.floor(args.text.length / 2);
|
|
37322
|
+
const left = args.text.slice(0, splitOffset);
|
|
37323
|
+
const right = args.text.slice(splitOffset);
|
|
37324
|
+
const markers = splitMarkerPair();
|
|
37325
|
+
const target = producerInputLimitTokens;
|
|
37326
|
+
let lo = 0;
|
|
37327
|
+
let hi = 1;
|
|
37328
|
+
let best = markers;
|
|
37329
|
+
for (let iteration = 0;iteration < 48; iteration++) {
|
|
37330
|
+
const scale = (lo + hi) / 2;
|
|
37331
|
+
const leftLength = Math.floor(left.length * scale);
|
|
37332
|
+
const rightLength = Math.floor(right.length * scale);
|
|
37333
|
+
const candidate = left.slice(0, leftLength) + markers + right.slice(right.length - rightLength);
|
|
37334
|
+
if (estimateTokens(candidate) <= target) {
|
|
37335
|
+
best = candidate;
|
|
37336
|
+
lo = scale;
|
|
37337
|
+
} else {
|
|
37338
|
+
hi = scale;
|
|
37339
|
+
}
|
|
37340
|
+
}
|
|
37341
|
+
return {
|
|
37342
|
+
text: best,
|
|
37343
|
+
producerInputLimitTokens,
|
|
37344
|
+
...boundary ? { splitBoundaryOrdinal: boundary.ordinal } : {},
|
|
37345
|
+
removedTokens: Math.max(0, originalTokens - estimateTokens(best))
|
|
37346
|
+
};
|
|
36976
37347
|
}
|
|
36977
37348
|
|
|
36978
37349
|
// src/hooks/magic-context/protected-tail-boundary.ts
|
|
@@ -39492,6 +39863,25 @@ function shouldSuppressHistorianAlert(sessionId) {
|
|
|
39492
39863
|
lastHistorianAlertBySession.set(sessionId, Date.now());
|
|
39493
39864
|
return false;
|
|
39494
39865
|
}
|
|
39866
|
+
function findDanglingPublicationBoundary(sessionId, compartments, resolveOrdinal = readRawSessionMessageOrdinalById) {
|
|
39867
|
+
for (const compartment of compartments) {
|
|
39868
|
+
if (resolveOrdinal(sessionId, compartment.startMessageId) === null) {
|
|
39869
|
+
return {
|
|
39870
|
+
sequence: compartment.sequence,
|
|
39871
|
+
side: "start",
|
|
39872
|
+
messageId: compartment.startMessageId
|
|
39873
|
+
};
|
|
39874
|
+
}
|
|
39875
|
+
if (resolveOrdinal(sessionId, compartment.endMessageId) === null) {
|
|
39876
|
+
return {
|
|
39877
|
+
sequence: compartment.sequence,
|
|
39878
|
+
side: "end",
|
|
39879
|
+
messageId: compartment.endMessageId
|
|
39880
|
+
};
|
|
39881
|
+
}
|
|
39882
|
+
}
|
|
39883
|
+
return null;
|
|
39884
|
+
}
|
|
39495
39885
|
async function runCompartmentAgent(deps) {
|
|
39496
39886
|
const {
|
|
39497
39887
|
client,
|
|
@@ -39695,11 +40085,20 @@ async function runCompartmentAgent(deps) {
|
|
|
39695
40085
|
rollbackDrainReservation();
|
|
39696
40086
|
return;
|
|
39697
40087
|
}
|
|
39698
|
-
const
|
|
40088
|
+
const fittedAtomicSource = chunk.oversizeAtomicUnit ? fitAtomicHistorianSourceToProducerWindow({
|
|
40089
|
+
text: chunk.text,
|
|
40090
|
+
resultBoundaries: chunk.toolResultBoundaries,
|
|
40091
|
+
contextLimitTokens: deps.historianContextLimit,
|
|
40092
|
+
maxOutputTokens: deps.historianMaxOutputTokens ?? 32000
|
|
40093
|
+
}) : null;
|
|
40094
|
+
const chunkText = chunk.oversizeAtomicUnit ? fittedAtomicSource?.text ?? chunk.text : truncateHistorianInputIfNeeded(chunk.text, historianChunkTokens);
|
|
39699
40095
|
const producerSourceTokens = estimateTokens(chunkText);
|
|
39700
40096
|
if (boundarySnapshot.oversizeAtomicUnit || chunk.oversizeAtomicUnit) {
|
|
39701
40097
|
sessionLog(sessionId, `historian oversize admission: range=${chunk.startIndex}-${chunk.endIndex} rawComponentTokens=${boundarySnapshot.diagnostics?.head.completedFence.tokenMass ?? "unknown"} perRunCap=${perRunCap} producerSourceTokens=${producerSourceTokens} historianChunkTokens=${historianChunkTokens}; ${describeBoundaryDiagnostics(boundarySnapshot)}`);
|
|
39702
40098
|
}
|
|
40099
|
+
if (fittedAtomicSource && fittedAtomicSource.removedTokens > 0) {
|
|
40100
|
+
sessionLog(sessionId, `historian pathological component split: range=${chunk.startIndex}-${chunk.endIndex} resultBoundary=${fittedAtomicSource.splitBoundaryOrdinal ?? "midpoint"} removedTokens=${fittedAtomicSource.removedTokens} producerSourceTokens=${producerSourceTokens} producerInputLimitTokens=${fittedAtomicSource.producerInputLimitTokens ?? "unknown"}`);
|
|
40101
|
+
}
|
|
39703
40102
|
const producerWindowFailure = producerWindowFailureReason({
|
|
39704
40103
|
producerSourceTokens,
|
|
39705
40104
|
contextLimitTokens: deps.historianContextLimit,
|
|
@@ -39830,6 +40229,16 @@ ${chunkText}`,
|
|
|
39830
40229
|
return;
|
|
39831
40230
|
}
|
|
39832
40231
|
const compartmentTagKeys = await getRawSessionTagKeysThrough(sessionId, lastCompartmentEnd, { db });
|
|
40232
|
+
const danglingBoundary = findDanglingPublicationBoundary(sessionId, newCompartments);
|
|
40233
|
+
if (danglingBoundary) {
|
|
40234
|
+
const reason = `compartment boundary disappeared before publication (sequence=${danglingBoundary.sequence} side=${danglingBoundary.side} missing_id=${danglingBoundary.messageId})`;
|
|
40235
|
+
telemetry.failureReason = `publish-boundary: ${reason}`;
|
|
40236
|
+
sessionLog(sessionId, `historian publish refused: sequence=${danglingBoundary.sequence} side=${danglingBoundary.side} missing_id=${danglingBoundary.messageId}; raw snapshot changed during the historian run`);
|
|
40237
|
+
const failCount = incrementHistorianFailure(db, sessionId, reason);
|
|
40238
|
+
await notifyHistorianIssue(buildHistorianFailureNotice(failCount, reason));
|
|
40239
|
+
rollbackDrainReservation();
|
|
40240
|
+
return;
|
|
40241
|
+
}
|
|
39833
40242
|
let published = false;
|
|
39834
40243
|
const transactionStartedAt = performance.now();
|
|
39835
40244
|
db.exec("BEGIN IMMEDIATE");
|
|
@@ -41533,4 +41942,4 @@ async function runUpgradeMemoryMigration(ctx, sessionId, migrationDirectory) {
|
|
|
41533
41942
|
}
|
|
41534
41943
|
}
|
|
41535
41944
|
|
|
41536
|
-
export { withContentLanguageDirective, buildPrimaryLanguageDirective, setJsoncValue, removeJsoncValue, cortexKitUserConfigBasePath, cortexKitProjectConfigBasePath, resolveLegacyConfigSources, resolveLegacyConfigSourcesForHarness, migrateMagicContextConfigLocations, string, unknown, array, object, union, tuple, record, parseCron, nextOccurrence, nextDueAtMs, promptSurfaceConfigIdentity, resolveModelConfigValue, resolvePromptSurface, resolveModelConfigOrDefault, DEFAULT_EXECUTE_THRESHOLD_PERCENTAGE, DEFAULT_HISTORIAN_TIMEOUT_MS, DEFAULT_LOCAL_EMBEDDING_MODEL, PER_HARNESS_MIGRATION_INVENTORY, PER_HARNESS_MODEL_KEYS, ConfigProfilesSchema, MagicContextConfigSchema, isFailClosedBlockingError, shouldBypassFailClosedBlock, resolveAgentNameFromMessages, createFailClosedController, recordHookInitFailure, clearHookInitFailure, getLastHookInitFailure, ProjectIdentityError, resolveProjectIdentityStrict, takeDubiousOwnershipProjectIdentityWarning, resolveProjectIdentity, directoryHasGitMetadata, resolveProjectIdentityForSession, normalizeStoredProjectPath, storedPathBelongsToIdentity, isLinkedGitWorktree, recordSessionProjectIdentity, beginBootQuietPeriod, bootQuietRemainingMs, scheduleAfterBootQuiet, rpcPortDir, rpcPortFilePath, isPidAlive, parseRpcPortFile, observeAuthorityRouting, registerModuleNoteEvaluationBridge, getModuleNoteEvaluationBridge, getContextStoreUuid, ensureContextStoreUuid, getAuthorityManagedMarker, reconcileAuthorityProject, checksumAuthoritySeedRows, prepareAuthority, drainAuthority, getMemoryMirrorStatus, applyMirroredNoteCompileFields, drainMirrorPages, pullMemoryMirrorOnce, V2_MEMORY_CATEGORIES, CATEGORY_PRIORITY, resolveWorkspaceShareCategories, resolveWorkspaceIdentitySet, expandWorkspaceIdentitySetWithAliases, resolveStoredPathWorkspaceIdentity, storedPathBelongsToWorkspace, sourceNameForMemory, computeWorkspaceEpochFingerprint, textMentionsRecentCommit, hasMeaningfulUserText, extractTexts, extractToolCallSummaries, getTokenizerNativeMemoryStats, preloadTokenizer, estimateTokens, normalizeText, getCurrentToolSetHash, recordToolDefinition, getMeasuredToolDefinitionTokens, getSchemaFenceRejection, getMigrationOnOpenRefusal, LATEST_SUPPORTED_VERSION, getDatabasePath, getPersistedSchemaVersion, setSqlitePragmaConfig, runSqliteOptimize, openDatabase, openDatabaseAsync, isDatabasePersisted, getDatabasePersistenceError, COMPARTMENT_AGENT_SYSTEM_PROMPT, HISTORIAN_EDITOR_SYSTEM_PROMPT, COMPARTMENT_STRUCTURAL_SYSTEM_PROMPT, Priority, AdmissionClass, SocketClosedError, SocketTimeoutError, StaleRouteHandleError, SubcClient, isConsumerReconnectTransient, connectionFileExists, isRecord, CTX_REDUCE_KEEP, newestCtxReduceTagNumbers, stripWellFormedLeadingTagPrefix, stripPersistedAssistantText, byteSize, stripTagPrefix, prependTag, isThinkingPart, estimateImageTokensFromDataUrl, normalizeTodoStateJson, buildSyntheticTodoPart, computeSyntheticCallId, isSyntheticTodoPart, countRealUserMessages, tailHygieneStructuralSignature, sameTailHygieneStructuralSignature, refreshTailHygieneBaseline, effectiveTailHygiene, assertTailHygieneContentUnchanged, CHANNEL1_SENTINEL, CHANNEL1_FLOOR_TOKENS, toolOutputTokens, decideChannel1, evaluateChannel2, formatChannel1Evaluation, formatChannel2Evaluation, reclaimableToolOutputCount, buildChannel2Reminder, buildChannel1Reminder, estimateEmergencyDropReclaimTokens, planEmergencyDrop, getRecentTagOwnerMessageIds, AGE_RECLAIM_MIN_TOKENS, getOldestActiveUnprotectedToolTags, getActiveToolTagsForAgeReclaim, getTriggerTagTokenUpperBound, getActiveTagTokenTotalsByMessage, tagTokenCountIsNull, backfillTagTokenCounts, insertTag, updateTagStatus, markWhitespaceAssistantTagInert, getInertWhitespaceAssistantTags, updateTagDropMode, updateCavemanDepth, updateTagMessageId, markTagsCompactedByMessageIds, deleteTagsByMessageId, getMaxTagNumberBySession, getTagNumberByMessageId, getAssignableTagNumberByMessageId, deriveTagLoadFloor, getTagsBySession, getActiveTagsBySession, getTailHygieneTags, getDroppedTagsBySession, getTagsByNumbers, getDroppedTagsByNumbers, getMaxDroppedTagNumber, getTagById, getToolTagNumberByOwner, getNullOwnerToolTag, adoptNullOwnerToolTag, getCandidateToolOwners, pickNearestPriorOwner, isRawCompactionSummaryInfo, extractInMemoryMessageViews, buildInMemoryTailRawMessages, estimateTrueRawMessageTokens, invalidateTrueRawTokenCache, isTextPart, isToolPartWithOutput, isFilePart, buildFileSourceContent, assertExecutableToolInput, createDroppedInputToolExecuteBeforeHook, isEditTool, partHasCompletedResult, extractToolCallObservation, ToolMutationBatch, createToolDropTarget, setRawMessageProvider, cleanUserText, withRawSessionMessageCache, readRawSessionMessages, primeTailRawMessageCache, primeInMemoryTailRawMessageCache, readRawSessionMessageOrdinalPage, getRawSessionStoredMessageCount, readRawSessionMessagePartsById, readRawSessionMessageOrdinalById, readRawSessionMessageById, readSessionChunk, readRawSessionSeedTail, COMPARTMENT_LEASE_RENEWAL_MS, acquireCompartmentLease, renewCompartmentLease, releaseCompartmentLeaseBestEffort, HAS_COMPARTMENT_CONTENT_SQL, getCompartments, getLastCompartmentEndMessage, getLastCompartmentEndMessageId, clearRecompStaging, getMessageIndexSourceIdentity, isMessageIndexSourceCurrent, getLastIndexedOrdinal, getIndexedMessageCorpusSize, getMessageIndexReconciliationStartOrdinal, isMessageIndexReconciledThrough, deleteIndexedMessage, clearIndexedMessages, indexSingleMessage, indexMessagesAfterOrdinal, sweepOrphanedOpenCodeMessageIndexes, recordEmbeddingMeasurement, getMaxM0MutationId, queueMemoryMutation, getMemoryMutationsForRenderByProjects, getMaxMemoryMutationIdForProjects, MAX_EXECUTE_THRESHOLD, escalationBands, MERGED_REASONING_PARTS_PREFIX, readFrozenMergedReasoningParts, getProtectionWindowForSession, isEmergencyRecoveryArmed, isProviderOverflowReconfirmed, isProviderOverflowFailClosedProven, getEmergencyRecoveryArmedAt, loadPersistedUsage, loadProtectedTailMeta, resetProtectedTailNoEligibleHead, getWrapupInProgressState, acquireWrapupInProgress, updateWrapupInProgress, releaseWrapupInProgress, resolveCompactionModeRecord, getCompactionModeRecord, setCompactionModeRecord, getPersistedReasoningWatermark, setPersistedReasoningWatermark, clearPersistedReasoningWatermark, getEmergencyInputSample, setEmergencyDropSample, clearEmergencyDropSample, getLastNudgeUndropped, setLastNudgeUndropped, getChannel1NudgeState, setChannel1NudgeState, markChannel1PostReduceGracePending, captureChannel1PostReduceGraceBaseline, getChannel2NudgeState, getChannel2NudgeClaim, setChannel2NudgeState, casChannel2NudgeState, claimChannel2NudgeState, casChannel2NudgeClaim, getPersistedNoteNudge, getNoteNudgeAnchors, getAutoSearchHintDecisions, appendAutoSearchHintDecision, pruneNoteNudgeAnchors, pruneAutoSearchHintDecisions, removeNoteNudgeAnchorByMessageId, removeAutoSearchHintDecisionByMessageId, getPersistedTodoPermissionDenied, setPersistedTodoPermissionDenied, getPersistedTodoSyntheticAnchor, setPersistedTodoSyntheticAnchor, clearPersistedTodoSyntheticAnchor, setNoteLastReadAt, getHistorianFailureState, clearHistorianFailureState, getOverflowState, loadTransformPassStateSnapshot, recordOverflowDetected, recordDetectedContextLimit, clearEmergencyRecovery, clearDetectedContextLimit, getPersistedCompactionMarkerState, setPersistedCompactionMarkerState, getDeferredClearedCompactionMarkerState, retireDeferredClearedCompactionMarkerState, getStrippedPlaceholderIds, applyStrippedPlaceholderDelta, removeStrippedPlaceholderId, NEWEST_REASONING_BEARING_ASSISTANT, THINKING_BINDING_RECOVERY_FROZEN_PREFIX, thinkingBindingRecoveryFrozenId, getThinkingBindingRecoveryTarget, armThinkingBindingRecovery, clearThinkingBindingRecoveryIf, getMergedReasoningStrippedIds, addMergedReasoningStrippedIds, getTrailingBlankDecisions, addTrailingBlankDecisions, demoteTrailingBlankKeepDecisions, getStaleReduceStrippedIds, addStaleReduceStrippedIds, getProcessedImageStrippedIds, addProcessedImageStrippedIds, getPendingCompactionMarkerState, loadPostprocessReplaySnapshot, setPendingCompactionMarkerState, clearPendingCompactionMarkerStateIf, getSessionsWithPendingMarker, setSessionWorkMetrics, getObservedEpochFloor, resolveEpochFloorForPass, getNotes, addNote, getSessionNotes, getPendingSmartNotes, getReadySmartNotes, updateNote, dismissNotes, dismissNote, markNoteReady, markNoteChecked, queuePendingOp, getPendingOps, getPendingOpsCount, clearPendingOps, removePendingOp, PRIMER_CANDIDATE_TTL_MS, PRIMER_CANDIDATE_MAX_AGE_MS, primerOccurrenceKey, primerOccurrenceUtcDay, updatePrimerCandidateEmbedding, getPrimerCandidatesByIds, getPrimerCandidatesForPromotion, countPrimerCandidatesForProject, getActivePrimers, createPrimer, updatePrimerSupport, updatePrimerAnswer, GLOBAL_USER_PROFILE_PROJECT_PATH, getProjectState, bumpProjectMemoryEpoch, bumpProjectUserProfileVersion, saveSourceContent, replaceSourceContent, getSourceContents, createChildSessionWithFence, HiddenCompletionRefusal, detectThinkingBindingMismatch, isFable51ThinkingBindingModel, detectOverflow, modelBodyField, toModelEntry, getPromptFailureDetail, promptSyncWithValidatedOutputRetry, normalizeSDKResponse, promptSurfaceHashMaterial, createPromptSurfaceRuntime, createPromptSurfaceGuidanceEpochCache, extractLatestAssistantText, hasLengthCappedOutput, setKeepSubagents, teardownChildSession, renderUserFacingFailure, userFacingFailureCode, renderCapabilityRefusal, capabilityRefusalCode, renderDreamFailure, dreamFailureCode, renderEmbeddingFailure, getCompartmentEvents, SYNAPSE_DEFAULT_MODEL, toSynapseLaneDescriptor, formatSynapseLaneDescriptor, SynapseEmbeddingProvider, loadCompartmentChunkEmbeddingsForSearch, cosineSimilarity, computeNormalizedHash, getLocalEmbeddingNativeMemoryStats, saveCommitEmbedding, loadProjectCommitEmbeddings, loadUnembeddedCommits, countEmbeddedCommits, upsertCommits, getLatestIndexedCommitTimeMs, enforceProjectCap, GIT_SWEEP_LEASE_RENEWAL_MS, acquireGitSweepLease, renewGitSweepLease, markGitSweepSuccessAndRelease, parkGitSweepNonIndexable, releaseGitSweepLease, saveEmbeddingIfHashMatches, getProjectEmbeddings, peekProjectEmbeddings, invalidateProject, invalidateMemory, describeShadowBackfillWriteRefusal, markProjectLoadUntrusted, contentSha256, sweepStaleEmbeddingIdentitiesForProject, registerProjectEmbedding, registerProjectShadowEmbedding, getShadowEmbeddingMeasurementCohort, getPrimaryEmbeddingMeasurementCohort, embedShadowTextForProject, enqueueShadowEmbeddingItems, registerProjectInObservationMode, getProjectEmbeddingSnapshot, embedTextForProject, embedBatchForProject, embedItemsForProject, embedUnembeddedMemoriesForProject, drainCommitBacklogForProject, embedSessionCompartmentChunks, getEmbeddingCoverageStatus, isEmbeddingEnabled, embedText, ensureMemoryEmbeddings, computeCueContentHash, hasMuralCueColumns, getMuralCueState, memoryNeedsCue, setMuralCue, recordMuralCueRejection, hasMemoryShareableColumn, hasMemoryClassifiedAtColumn, getUnclassifiedMemoryIds, ModuleMemoryAuthorityError, insertMemory, insertMemoryIdempotent, getMemoryByHash, getMemoriesByProject, buildWorkspaceMemorySqlFilter, getMemoriesByProjects, getMaxMemoryIdForProjects, readNewMemoriesForM1Union, getMemoryById, getMemoriesByIds, updateMemorySeenCount, updateMemoryRetrievalCount, setMemoryClassification, supersededMemory, mergeMemoryStats, archiveMemory, getMemoryCountsByStatus, sanitizeFtsQuery, searchMemoriesFTS, searchMemoriesFTSUnion, recordMemoryMapping, recordMemoryVerifications, getUnmappedMemoryIds, clearMemoryVerifications, getMemoryVerifications, resolveGitTopLevel, readGitHead, readGitChangedFilesSince, readGitFileChangeTimesSince, verificationFileExists, normalizeVerificationFiles, recordChildInvocation, createV1HiddenCompletionExecutor, USER_MEMORY_CANDIDATE_TTL_MS, insertUserMemoryCandidates, getUserMemoryCandidates, deleteUserMemoryCandidates, pruneExpiredUserMemoryCandidates, insertUserMemory, getActiveUserMemories, updateUserMemoryContent, dismissUserMemory, getMural, BoundedSessionMap, registerLkgPersistence, beginLkgPass, visitMessageContentFields, messageContentFields, signatureForFields, exactReusablePrefix, incrementalLkgContentDigests, lkgContentDigest, captureSlot, getInMemorySlot, getSlot, dropSlot, noteEntry, getLkgSlotHeapStats, onNoteTrigger, peekNoteNudgeText, markNoteNudgeDelivered, clearNoteNudgeTriggerAndCooldown, resetNoteNudgeCooldownOnly, clearNoteNudgeTriggerOnly, getOpenCodeDbPath, removeMcOwnedCompactionMarkers, MARKER_SUMMARY_TEXT, applyDeferredCompactionMarker, removeCompactionMarkerForSession, checkCompactionMarkerConsistency, modelKeyAcceptsImages, resolveMuralWire, extractM0Block, formatDate, injectTemporalMarkers, clearInjectionCache, getVisibleMemoryIds, selectHiddenMessagesAtCompactionSeam, prepareCompartmentInjection, renderCompartmentInjection, mustMaterialize, trimMemoriesToBudgetV2, renderMemoryBlockV2, materializeM0, prepareCachedM0M1Replay, hasCompleteCachedM0M1, injectM0M1, describeBoundaryDiagnostics, RECOVERY_NO_HEAD_LIMIT, resolveOpenCodeProtectedTailBoundary, resolveWrapupProtectedTailBoundary, getRawHistoryEligibility, hasRunnableCompartmentWindow, recordHighPressureNoEligibleHead, runCompartmentAgent, snapRangeToCompartments, getActiveCompartmentRun, markActiveCompartmentRunPublished, registerActiveCompartmentRun, startCompartmentAgent, setRecompStarting2, setRecompTerminal2, runManagedRecomp2, runManagedUpgrade2 };
|
|
41945
|
+
export { withContentLanguageDirective, buildPrimaryLanguageDirective, setJsoncValue, removeJsoncValue, cortexKitUserConfigBasePath, cortexKitProjectConfigBasePath, resolveLegacyConfigSources, resolveLegacyConfigSourcesForHarness, migrateMagicContextConfigLocations, string, unknown, array, object, union, tuple, record, parseCron, nextOccurrence, nextDueAtMs, promptSurfaceConfigIdentity, resolveModelConfigValue, resolvePromptSurface, resolveModelConfigOrDefault, DEFAULT_EXECUTE_THRESHOLD_PERCENTAGE, DEFAULT_HISTORIAN_TIMEOUT_MS, PROTECTED_TOKENS_MIN, DEFAULT_LOCAL_EMBEDDING_MODEL, PER_HARNESS_MIGRATION_INVENTORY, PER_HARNESS_MODEL_KEYS, ConfigProfilesSchema, MagicContextConfigSchema, isFailClosedBlockingError, shouldBypassFailClosedBlock, resolveAgentNameFromMessages, createFailClosedController, recordHookInitFailure, clearHookInitFailure, getLastHookInitFailure, ProjectIdentityError, resolveProjectIdentityStrict, takeDubiousOwnershipProjectIdentityWarning, resolveProjectIdentity, directoryHasGitMetadata, resolveProjectIdentityForSession, normalizeStoredProjectPath, storedPathBelongsToIdentity, isLinkedGitWorktree, recordSessionProjectIdentity, beginBootQuietPeriod, bootQuietRemainingMs, scheduleAfterBootQuiet, rpcPortDir, rpcPortFilePath, isPidAlive, parseRpcPortFile, observeAuthorityRouting, registerModuleNoteEvaluationBridge, getModuleNoteEvaluationBridge, getContextStoreUuid, ensureContextStoreUuid, getAuthorityManagedMarker, reconcileAuthorityProject, checksumAuthoritySeedRows, prepareAuthority, drainAuthority, getMemoryMirrorStatus, moduleMemoryIdentityForHostId, hostMemoryIdentityForModuleId, applyMirroredNoteCompileFields, applyTargetedMemoryMirrorRow, drainMirrorPages, pullMemoryMirrorOnce, V2_MEMORY_CATEGORIES, CATEGORY_PRIORITY, resolveWorkspaceShareCategories, resolveWorkspaceIdentitySet, expandWorkspaceIdentitySetWithAliases, resolveStoredPathWorkspaceIdentity, storedPathBelongsToWorkspace, sourceNameForMemory, computeWorkspaceEpochFingerprint, textMentionsRecentCommit, hasMeaningfulUserText, extractTexts, extractToolCallSummaries, getTokenizerNativeMemoryStats, preloadTokenizer, estimateTokens, normalizeText, getCurrentToolSetHash, recordToolDefinition, getMeasuredToolDefinitionTokens, getSchemaFenceRejection, getMigrationOnOpenRefusal, LATEST_SUPPORTED_VERSION, getDatabasePath, getPersistedSchemaVersion, setSqlitePragmaConfig, runSqliteOptimize, openDatabase, openDatabaseAsync, isDatabasePersisted, getDatabasePersistenceError, COMPARTMENT_AGENT_SYSTEM_PROMPT, HISTORIAN_EDITOR_SYSTEM_PROMPT, COMPARTMENT_STRUCTURAL_SYSTEM_PROMPT, Priority, AdmissionClass, SocketClosedError, SocketTimeoutError, StaleRouteHandleError, SubcClient, isConsumerReconnectTransient, connectionFileExists, isRecord, CTX_REDUCE_KEEP, newestCtxReduceTagNumbers, stripWellFormedLeadingTagPrefix, stripPersistedAssistantText, byteSize, stripTagPrefix, prependTag, isThinkingPart, estimateImageTokensFromDataUrl, normalizeTodoStateJson, buildSyntheticTodoPart, computeSyntheticCallId, isSyntheticTodoPart, countRealUserMessages, tailHygieneStructuralSignature, sameTailHygieneStructuralSignature, refreshTailHygieneBaseline, effectiveTailHygiene, assertTailHygieneContentUnchanged, CHANNEL1_SENTINEL, CHANNEL1_FLOOR_TOKENS, toolOutputTokens, decideChannel1, evaluateChannel2, formatChannel1Evaluation, formatChannel2Evaluation, reclaimableToolOutputCount, buildChannel2Reminder, buildChannel1Reminder, estimateEmergencyDropReclaimTokens, planEmergencyDrop, getRecentTagOwnerMessageIds, AGE_RECLAIM_MIN_TOKENS, getOldestActiveUnprotectedToolTags, getActiveToolTagsForAgeReclaim, getTriggerTagTokenUpperBound, getActiveTagTokenTotalsByMessage, tagTokenCountIsNull, backfillTagTokenCounts, insertTag, updateTagStatus, markWhitespaceAssistantTagInert, getInertWhitespaceAssistantTags, updateTagDropMode, updateCavemanDepth, updateTagMessageId, markTagsCompactedByMessageIds, deleteTagsByMessageId, getMaxTagNumberBySession, getTagNumberByMessageId, getAssignableTagNumberByMessageId, deriveTagLoadFloor, getTagsBySession, getActiveTagsBySession, getTailHygieneTags, getDroppedTagsBySession, getTagsByNumbers, getDroppedTagsByNumbers, getMaxDroppedTagNumber, getTagById, getToolTagNumberByOwner, getNullOwnerToolTag, adoptNullOwnerToolTag, getCandidateToolOwners, pickNearestPriorOwner, isRawCompactionSummaryInfo, extractInMemoryMessageViews, buildInMemoryTailRawMessages, estimateTrueRawMessageTokens, invalidateTrueRawTokenCache, isTextPart, isToolPartWithOutput, isFilePart, buildFileSourceContent, assertExecutableToolInput, createDroppedInputToolExecuteBeforeHook, isEditTool, partHasCompletedResult, extractToolCallObservation, ToolMutationBatch, createToolDropTarget, setRawMessageProvider, cleanUserText, withRawSessionMessageCache, readRawSessionMessages, primeTailRawMessageCache, primeInMemoryTailRawMessageCache, readRawSessionMessageOrdinalPage, getRawSessionStoredMessageCount, readRawSessionMessageIdOrdinals, readRawSessionMessagePartsById, readRawSessionMessageOrdinalById, readRawSessionMessageById, readSessionChunk, readRawSessionSeedTail, COMPARTMENT_LEASE_RENEWAL_MS, acquireCompartmentLease, renewCompartmentLease, releaseCompartmentLeaseBestEffort, HAS_COMPARTMENT_CONTENT_SQL, getCompartments, getLastCompartmentEndMessage, getLastCompartmentEndMessageId, clearRecompStaging, getMessageIndexSourceIdentity, isMessageIndexSourceCurrent, getLastIndexedOrdinal, getIndexedMessageCorpusSize, getMessageIndexReconciliationStartOrdinal, isMessageIndexReconciledThrough, deleteIndexedMessage, clearIndexedMessages, indexSingleMessage, indexMessagesAfterOrdinal, sweepOrphanedOpenCodeMessageIndexes, recordEmbeddingMeasurement, getMaxM0MutationId, queueMemoryMutation, getMemoryMutationsForRenderByProjects, getMaxMemoryMutationIdForProjects, MAX_EXECUTE_THRESHOLD, escalationBands, MERGED_REASONING_PARTS_PREFIX, readFrozenMergedReasoningParts, getProtectionWindowForSession, isEmergencyRecoveryArmed, isProviderOverflowReconfirmed, isProviderOverflowFailClosedProven, getEmergencyRecoveryArmedAt, loadPersistedUsage, loadProtectedTailMeta, resetProtectedTailNoEligibleHead, getWrapupInProgressState, acquireWrapupInProgress, updateWrapupInProgress, releaseWrapupInProgress, resolveCompactionModeRecord, getCompactionModeRecord, setCompactionModeRecord, getPersistedReasoningWatermark, setPersistedReasoningWatermark, clearPersistedReasoningWatermark, getEmergencyInputSample, setEmergencyDropSample, clearEmergencyDropSample, getLastNudgeUndropped, setLastNudgeUndropped, getChannel1NudgeState, setChannel1NudgeState, markChannel1PostReduceGracePending, captureChannel1PostReduceGraceBaseline, getChannel2NudgeState, getChannel2NudgeClaim, setChannel2NudgeState, casChannel2NudgeState, claimChannel2NudgeState, casChannel2NudgeClaim, getPersistedNoteNudge, getNoteNudgeAnchors, getAutoSearchHintDecisions, appendAutoSearchHintDecision, pruneNoteNudgeAnchors, pruneAutoSearchHintDecisions, removeNoteNudgeAnchorByMessageId, removeAutoSearchHintDecisionByMessageId, getPersistedTodoPermissionDenied, setPersistedTodoPermissionDenied, getPersistedTodoSyntheticAnchor, setPersistedTodoSyntheticAnchor, clearPersistedTodoSyntheticAnchor, setNoteLastReadAt, getHistorianFailureState, clearHistorianFailureState, getOverflowState, loadTransformPassStateSnapshot, recordOverflowDetected, recordDetectedContextLimit, clearEmergencyRecovery, clearDetectedContextLimit, getPersistedCompactionMarkerState, setPersistedCompactionMarkerState, getDeferredClearedCompactionMarkerState, retireDeferredClearedCompactionMarkerState, getStrippedPlaceholderIds, applyStrippedPlaceholderDelta, removeStrippedPlaceholderId, NEWEST_REASONING_BEARING_ASSISTANT, THINKING_BINDING_RECOVERY_FROZEN_PREFIX, thinkingBindingRecoveryFrozenId, getThinkingBindingRecoveryTarget, armThinkingBindingRecovery, clearThinkingBindingRecoveryIf, getMergedReasoningStrippedIds, addMergedReasoningStrippedIds, getTrailingBlankDecisions, addTrailingBlankDecisions, demoteTrailingBlankKeepDecisions, getStaleReduceStrippedIds, addStaleReduceStrippedIds, getProcessedImageStrippedIds, addProcessedImageStrippedIds, getPendingCompactionMarkerState, loadPostprocessReplaySnapshot, setPendingCompactionMarkerState, clearPendingCompactionMarkerStateIf, getSessionsWithPendingMarker, setSessionWorkMetrics, getObservedEpochFloor, resolveEpochFloorForPass, getNotes, addNote, getSessionNotes, getPendingSmartNotes, getReadySmartNotes, updateNote, dismissNotes, dismissNote, markNoteReady, markNoteChecked, queuePendingOp, getPendingOps, getPendingOpsCount, clearPendingOps, removePendingOp, PRIMER_CANDIDATE_TTL_MS, PRIMER_CANDIDATE_MAX_AGE_MS, primerOccurrenceKey, primerOccurrenceUtcDay, updatePrimerCandidateEmbedding, getPrimerCandidatesByIds, getPrimerCandidatesForPromotion, countPrimerCandidatesForProject, getActivePrimers, createPrimer, updatePrimerSupport, updatePrimerAnswer, GLOBAL_USER_PROFILE_PROJECT_PATH, getProjectState, bumpProjectMemoryEpoch, bumpProjectUserProfileVersion, saveSourceContent, replaceSourceContent, getSourceContents, createChildSessionWithFence, HiddenCompletionRefusal, detectThinkingBindingMismatch, isFable51ThinkingBindingModel, detectOverflow, parseProviderModel, modelBodyField, toModelEntry, getPromptFailureDetail, promptSyncWithValidatedOutputRetry, normalizeSDKResponse, ACTIVE_TOOL_IDS, promptSurfaceHashMaterial, createPromptSurfaceRuntime, createPromptSurfaceGuidanceEpochCache, extractLatestAssistantText, hasLengthCappedOutput, setKeepSubagents, teardownChildSession, renderUserFacingFailure, userFacingFailureCode, renderCapabilityRefusal, capabilityRefusalCode, renderDreamFailure, dreamFailureCode, renderEmbeddingFailure, getCompartmentEvents, SYNAPSE_DEFAULT_MODEL, toSynapseLaneDescriptor, formatSynapseLaneDescriptor, SynapseEmbeddingProvider, loadCompartmentChunkEmbeddingsForSearch, cosineSimilarity, computeNormalizedHash, getLocalEmbeddingNativeMemoryStats, saveCommitEmbedding, loadProjectCommitEmbeddings, loadUnembeddedCommits, countEmbeddedCommits, upsertCommits, getLatestIndexedCommitTimeMs, enforceProjectCap, GIT_SWEEP_LEASE_RENEWAL_MS, acquireGitSweepLease, renewGitSweepLease, markGitSweepSuccessAndRelease, parkGitSweepNonIndexable, releaseGitSweepLease, saveEmbeddingIfHashMatches, getProjectEmbeddings, peekProjectEmbeddings, invalidateProject, invalidateMemory, describeShadowBackfillWriteRefusal, markProjectLoadUntrusted, contentSha256, sweepStaleEmbeddingIdentitiesForProject, registerProjectEmbedding, registerProjectShadowEmbedding, getShadowEmbeddingMeasurementCohort, getPrimaryEmbeddingMeasurementCohort, embedShadowTextForProject, enqueueShadowEmbeddingItems, registerProjectInObservationMode, unregisterProjectShadowEmbedding, getProjectEmbeddingSnapshot, embedTextForProject, embedBatchForProject, embedItemsForProject, embedUnembeddedMemoriesForProject, drainCommitBacklogForProject, embedSessionCompartmentChunks, getEmbeddingCoverageStatus, isEmbeddingEnabled, embedText, ensureMemoryEmbeddings, computeCueContentHash, hasMuralCueColumns, getMuralCueState, memoryNeedsCue, setMuralCue, recordMuralCueRejection, hasMemoryShareableColumn, hasMemoryClassifiedAtColumn, getUnclassifiedMemoryIds, ModuleMemoryAuthorityError, insertMemory, insertMemoryIdempotent, getMemoryByHash, getMemoriesByProject, buildWorkspaceMemorySqlFilter, getMemoriesByProjects, getMaxMemoryIdForProjects, readNewMemoriesForM1Union, getMemoryById, getMemoriesByIds, updateMemorySeenCount, updateMemoryRetrievalCount, setMemoryClassification, supersededMemory, mergeMemoryStats, archiveMemory, getMemoryCountsByStatus, sanitizeFtsQuery, searchMemoriesFTS, searchMemoriesFTSUnion, recordMemoryMapping, recordMemoryVerifications, getUnmappedMemoryIds, clearMemoryVerifications, getMemoryVerifications, resolveGitTopLevel, readGitHead, readGitChangedFilesSince, readGitFileChangeTimesSince, verificationFileExists, normalizeVerificationFiles, recordChildInvocation, createV1HiddenCompletionExecutor, USER_MEMORY_CANDIDATE_TTL_MS, insertUserMemoryCandidates, getUserMemoryCandidates, deleteUserMemoryCandidates, pruneExpiredUserMemoryCandidates, insertUserMemory, getActiveUserMemories, updateUserMemoryContent, dismissUserMemory, getMural, BoundedSessionMap, registerLkgPersistence, beginLkgPass, visitMessageContentFields, messageContentFields, signatureForFields, exactReusablePrefix, incrementalLkgContentDigests, lkgContentDigest, captureSlot, getInMemorySlot, getSlot, dropSlot, noteEntry, getLkgSlotHeapStats, onNoteTrigger, peekNoteNudgeText, markNoteNudgeDelivered, clearNoteNudgeTriggerAndCooldown, resetNoteNudgeCooldownOnly, clearNoteNudgeTriggerOnly, getOpenCodeDbPath, removeMcOwnedCompactionMarkers, MARKER_SUMMARY_TEXT, applyDeferredCompactionMarker, removeCompactionMarkerForSession, checkCompactionMarkerConsistency, modelKeyAcceptsImages, resolveMuralWire, extractM0Block, formatDate, injectTemporalMarkers, clearInjectionCache, getVisibleMemoryIds, selectHiddenMessagesAtCompactionSeam, prepareCompartmentInjection, renderCompartmentInjection, mustMaterialize, trimMemoriesToBudgetV2, renderMemoryBlockV2, materializeM0, prepareCachedM0M1Replay, hasCompleteCachedM0M1, injectM0M1, describeBoundaryDiagnostics, RECOVERY_NO_HEAD_LIMIT, resolveOpenCodeProtectedTailBoundary, resolveWrapupProtectedTailBoundary, getRawHistoryEligibility, hasRunnableCompartmentWindow, recordHighPressureNoEligibleHead, runCompartmentAgent, snapRangeToCompartments, getActiveCompartmentRun, markActiveCompartmentRunPublished, registerActiveCompartmentRun, startCompartmentAgent, setRecompStarting2, setRecompTerminal2, runManagedRecomp2, runManagedUpgrade2 };
|