@cortexkit/opencode-magic-context 0.49.0 → 0.49.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/{announcement-fp14dw0n.js → announcement-hdbkt8v5.js} +1 -1
- package/dist/auto-search-worker.js +3 -3
- package/dist/config/{mural-model-deprecation.d.ts → deprecated-config.d.ts} +4 -1
- package/dist/config/deprecated-config.d.ts.map +1 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/project-security.d.ts +2 -2
- package/dist/config/schema/magic-context.d.ts +4 -4
- package/dist/config/schema/magic-context.d.ts.map +1 -1
- package/dist/{conflict-warning-hook-kzx4dmk1.js → conflict-warning-hook-asnt6hfc.js} +3 -3
- package/dist/{context-nj5f293n.js → context-tfyhtdcs.js} +111 -45
- package/dist/{derive-budgets-qz5rrr08.js → derive-budgets-j4ry8j8n.js} +1 -1
- package/dist/{embedding-backfill-aetxv1vt.js → embedding-backfill-wyc3ykyf.js} +7 -7
- package/dist/embedding-worker-process.js +30 -0
- package/dist/embedding-worker.js +5 -5
- package/dist/features/magic-context/dreamer/task-registry.d.ts +2 -3
- package/dist/features/magic-context/dreamer/task-registry.d.ts.map +1 -1
- package/dist/features/magic-context/memory/embedding-worker-client.d.ts +8 -1
- package/dist/features/magic-context/memory/embedding-worker-client.d.ts.map +1 -1
- package/dist/features/magic-context/memory/embedding-worker-process.d.ts +2 -0
- package/dist/features/magic-context/memory/embedding-worker-process.d.ts.map +1 -0
- package/dist/features/magic-context/memory/onnx-telemetry.d.ts +3 -0
- package/dist/features/magic-context/memory/onnx-telemetry.d.ts.map +1 -0
- package/dist/features/magic-context/overflow-detection.d.ts +1 -2
- package/dist/features/magic-context/overflow-detection.d.ts.map +1 -1
- package/dist/features/magic-context/storage-session-tables.d.ts.map +1 -1
- package/dist/features/magic-context/transform-decision-log.d.ts +1 -1
- package/dist/features/magic-context/transform-decision-log.d.ts.map +1 -1
- package/dist/features/magic-context/user-memory/storage-user-memory.d.ts +1 -0
- package/dist/features/magic-context/user-memory/storage-user-memory.d.ts.map +1 -1
- package/dist/hooks/magic-context/event-handler.d.ts.map +1 -1
- package/dist/hooks/magic-context/final-wire-token-estimate.d.ts +1 -0
- package/dist/hooks/magic-context/final-wire-token-estimate.d.ts.map +1 -1
- package/dist/hooks/magic-context/hook-handlers.d.ts.map +1 -1
- package/dist/hooks/magic-context/hook.d.ts +1 -0
- package/dist/hooks/magic-context/hook.d.ts.map +1 -1
- package/dist/hooks/magic-context/inject-compartments.d.ts.map +1 -1
- package/dist/hooks/magic-context/lkg-measured-request.d.ts +3 -1
- package/dist/hooks/magic-context/lkg-measured-request.d.ts.map +1 -1
- package/dist/hooks/magic-context/lkg-persist.d.ts +8 -14
- package/dist/hooks/magic-context/lkg-persist.d.ts.map +1 -1
- package/dist/hooks/magic-context/lkg-recovery-fence.d.ts +62 -0
- package/dist/hooks/magic-context/lkg-recovery-fence.d.ts.map +1 -0
- package/dist/hooks/magic-context/lkg-recovery-prefix.d.ts +38 -0
- package/dist/hooks/magic-context/lkg-recovery-prefix.d.ts.map +1 -0
- package/dist/hooks/magic-context/lkg-replay.d.ts +3 -1
- package/dist/hooks/magic-context/lkg-replay.d.ts.map +1 -1
- package/dist/hooks/magic-context/lkg-slot.d.ts.map +1 -1
- package/dist/hooks/magic-context/opaque-thinking.d.ts +12 -0
- package/dist/hooks/magic-context/opaque-thinking.d.ts.map +1 -0
- package/dist/hooks/magic-context/pass-outcome.d.ts +2 -2
- package/dist/hooks/magic-context/pending-materialization.d.ts +8 -0
- package/dist/hooks/magic-context/pending-materialization.d.ts.map +1 -0
- package/dist/hooks/magic-context/read-session-db.d.ts +3 -0
- package/dist/hooks/magic-context/read-session-db.d.ts.map +1 -1
- package/dist/hooks/magic-context/recomp-orchestrator.d.ts.map +1 -1
- package/dist/hooks/magic-context/rust-mode-transform.d.ts +1 -0
- package/dist/hooks/magic-context/rust-mode-transform.d.ts.map +1 -1
- package/dist/hooks/magic-context/strip-content.d.ts +5 -2
- package/dist/hooks/magic-context/strip-content.d.ts.map +1 -1
- package/dist/hooks/magic-context/system-date-refresh.d.ts +29 -0
- package/dist/hooks/magic-context/system-date-refresh.d.ts.map +1 -0
- package/dist/hooks/magic-context/system-prompt-dates.d.ts +6 -0
- package/dist/hooks/magic-context/system-prompt-dates.d.ts.map +1 -0
- package/dist/hooks/magic-context/system-prompt-delivery.d.ts +47 -0
- package/dist/hooks/magic-context/system-prompt-delivery.d.ts.map +1 -0
- package/dist/hooks/magic-context/system-prompt-hash.d.ts +4 -0
- package/dist/hooks/magic-context/system-prompt-hash.d.ts.map +1 -1
- package/dist/hooks/magic-context/tag-messages.d.ts +8 -0
- package/dist/hooks/magic-context/tag-messages.d.ts.map +1 -1
- package/dist/hooks/magic-context/transform-postprocess-phase.d.ts +2 -0
- package/dist/hooks/magic-context/transform-postprocess-phase.d.ts.map +1 -1
- package/dist/hooks/magic-context/transform.d.ts +6 -0
- package/dist/hooks/magic-context/transform.d.ts.map +1 -1
- package/dist/{index-9qjqq45k.js → index-0pjvpfkf.js} +21 -1
- package/dist/index-6m7rdv7y.js +733 -0
- package/dist/{index-1r0k9js3.js → index-6tfxmc4n.js} +10 -10
- package/dist/{index-gzcmtmar.js → index-7w18gg78.js} +25 -1
- package/dist/{index-nm6a8xpd.js → index-att4bfan.js} +1 -1
- package/dist/{index-ezmszwbd.js → index-eypn4ba6.js} +7 -4
- package/dist/{index-ha87j7a8.js → index-fdtkt5r1.js} +6 -6
- package/dist/{index-kp5qe690.js → index-fg00p1cg.js} +38 -36
- package/dist/{index-1bc61ans.js → index-fvnzcnww.js} +44 -1
- package/dist/index-gbmqa9x9.js +1170 -0
- package/dist/{index-pxwp2hjk.js → index-gzky5rva.js} +30 -53
- package/dist/{index-kq57tdf0.js → index-k6xvbj2e.js} +255 -1075
- package/dist/{index-0w56v4fm.js → index-mw7c950g.js} +1 -1
- package/dist/{index-1g30axtz.js → index-p0n5ryq8.js} +82 -900
- package/dist/{index-b7mv1jx3.js → index-p1hnwfd8.js} +1 -1
- package/dist/{index-peshmj6h.js → index-r2zcs71c.js} +6 -4
- package/dist/{index-kmpvemph.js → index-rafsaxac.js} +2 -2
- package/dist/{index-stbr4ce6.js → index-s7fc0fkn.js} +1 -1
- package/dist/{index-hj2q50k0.js → index-sfhndpcb.js} +463 -6
- package/dist/index-sv0bb7vg.js +6972 -0
- package/dist/{index-57mrqed8.js → index-w23dh319.js} +17 -258
- package/dist/{index-9rt53q79.js → index-xgrwmj82.js} +1 -1
- package/dist/{index-h2py7207.js → index-xnanvj3w.js} +765 -1255
- package/dist/{index-2jcbj7r1.js → index-zfzdpeq2.js} +2269 -3802
- package/dist/{index-s4j7t92z.js → index-zg8yq4ya.js} +29 -744
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +209 -61
- package/dist/{message-index-bounded-h0mrd4pr.js → message-index-bounded-hqktkhdy.js} +7 -6
- package/dist/migration-worker.js +6 -5
- package/dist/plugin/hooks/create-session-hooks.d.ts +3 -1
- package/dist/plugin/hooks/create-session-hooks.d.ts.map +1 -1
- package/dist/plugin/messages-transform.d.ts.map +1 -1
- package/dist/plugin/rpc-handlers.d.ts.map +1 -1
- package/dist/{project-embedding-registry-rtt0djyb.js → project-embedding-registry-0gv3h6y8.js} +6 -6
- package/dist/raw-ordinal-warmup-worker.js +1 -1
- package/dist/{read-session-chunk-ty89v75e.js → read-session-chunk-5mh0bh8y.js} +5 -4
- package/dist/{recomp-orchestrator-4f1yyd1q.js → recomp-orchestrator-kpkhkjhq.js} +20 -19
- package/dist/{search-pz4f4wge.js → search-p9w39qv4.js} +15 -14
- package/dist/{send-session-notification-38cd5dqt.js → send-session-notification-xffh3bbe.js} +2 -2
- package/dist/shared/models-dev-cache.d.ts.map +1 -1
- package/dist/shared/storage-file-mutex.d.ts +9 -0
- package/dist/shared/storage-file-mutex.d.ts.map +1 -0
- package/dist/shared/storage-permissions.d.ts +6 -0
- package/dist/shared/storage-permissions.d.ts.map +1 -1
- package/dist/shared/window-geometry.d.ts +9 -66
- package/dist/shared/window-geometry.d.ts.map +1 -1
- package/dist/standalone-plugin-marker.d.ts +8 -0
- package/dist/standalone-plugin-marker.d.ts.map +1 -0
- package/dist/tools/ctx-reduce/constants.d.ts +1 -2
- package/dist/tools/ctx-reduce/constants.d.ts.map +1 -1
- package/dist/tools/ctx-reduce/tools.d.ts +1 -1
- package/dist/tools/ctx-reduce/tools.d.ts.map +1 -1
- package/dist/{transform-postprocess-phase-tck4g20s.js → transform-postprocess-phase-481j5a7z.js} +20 -19
- package/dist/v2/auto-search-worker.js +3 -3
- package/dist/v2/{context-crbt6p1y.js → context-gsdtha5v.js} +873 -2122
- package/dist/v2/{derive-budgets-fgej9j46.js → derive-budgets-enckmg7y.js} +2 -2
- package/dist/v2/{embedding-backfill-ph1qfyn3.js → embedding-backfill-dbvjbcmm.js} +8 -9
- package/dist/v2/embedding-worker-process.js +29 -0
- package/dist/v2/embedding-worker.js +3 -4
- package/dist/v2/hooks/context.d.ts.map +1 -1
- package/dist/v2/hooks/copied-tag-notation.d.ts +19 -0
- package/dist/v2/hooks/copied-tag-notation.d.ts.map +1 -0
- package/dist/v2/hooks/payload.d.ts.map +1 -1
- package/dist/v2/hooks/system-prompt-response.d.ts +5 -0
- package/dist/v2/hooks/system-prompt-response.d.ts.map +1 -0
- package/dist/v2/{message-index-bounded-xwqdywxg.js → message-index-bounded-p6v0n8qh.js} +8 -7
- package/dist/v2/migration-worker.js +6 -5
- package/dist/v2/{project-embedding-registry-d6m7tyxr.js → project-embedding-registry-nyq7z8y6.js} +7 -8
- package/dist/v2/raw-ordinal-warmup-worker.js +2 -2
- package/dist/v2/{read-session-chunk-8p5mdryx.js → read-session-chunk-fhyfe4qa.js} +6 -5
- package/dist/v2/{recomp-orchestrator-ckfgt6wq.js → recomp-orchestrator-5xy7w136.js} +22 -22
- package/dist/v2/{search-ym8rehhz.js → search-j7bakcwa.js} +17 -17
- package/dist/v2/{send-session-notification-5m0yapqx.js → send-session-notification-f6v698r5.js} +2 -2
- package/dist/v2/{server-jvxzm1jy.js → server-1fszbabv.js} +28 -28
- package/dist/v2/{server-3j4d00kf.js → server-2htmbqbv.js} +25 -1
- package/dist/v2/{server-c5rrgrcd.js → server-4c7jt8gq.js} +25 -1
- package/dist/v2/{server-ycw9qqcy.js → server-4enr7s6x.js} +1 -1
- package/dist/v2/{server-v4mewb78.js → server-6tcrjfw8.js} +1 -1
- package/dist/v2/{server-x4hscabv.js → server-7spkq1y6.js} +2257 -3746
- package/dist/v2/{server-sa8jvrfc.js → server-7vkj6zhb.js} +29 -744
- package/dist/v2/{server-xwz4dqh9.js → server-8xmq9h3f.js} +30 -53
- package/dist/v2/{server-1tk82krw.js → server-bgzy0phk.js} +463 -6
- package/dist/v2/server-c7n2ftng.js +6860 -0
- package/dist/v2/server-cvgn49tr.js +733 -0
- package/dist/v2/{server-zm570tr2.js → server-cw6521wn.js} +232 -7
- package/dist/v2/{server-pj4pjv02.js → server-czb2rkpk.js} +21 -1
- package/dist/v2/{server-19zjmn02.js → server-d6g4whc2.js} +20 -14
- package/dist/v2/{server-1bc61ans.js → server-fvnzcnww.js} +44 -1
- package/dist/v2/{server-w32kmdez.js → server-kh958yj8.js} +3 -3
- package/dist/v2/{server-q4ph9bwn.js → server-mqvtz7wz.js} +7 -7
- package/dist/v2/{server-2s6ayq3t.js → server-ras2sxnc.js} +133 -13
- package/dist/v2/{server-ss95ky04.js → server-s2st631p.js} +1 -1
- package/dist/v2/{server-2s9qz6n7.js → server-t528t8qm.js} +1 -1
- package/dist/v2/{server-8k2agx29.js → server-vb7pbd9p.js} +17 -258
- package/dist/v2/{server-zp53y8js.js → server-zbxjj2mz.js} +2 -2
- package/dist/v2/server.d.ts.map +1 -1
- package/dist/v2/server.js +149 -5
- package/dist/v2/{storage-tags-8vw924zn.js → storage-tags-5yxrvkaf.js} +1 -1
- package/dist/v2/{wrapup-orchestrator-a7efxaax.js → wrapup-orchestrator-yem5422s.js} +28 -28
- package/dist/{wrapup-orchestrator-barbc6h9.js → wrapup-orchestrator-xvrr27ws.js} +21 -20
- package/package.json +4 -4
- package/src/config/{mural-model-deprecation.ts → deprecated-config.ts} +19 -0
- package/src/config/index.test.ts +15 -37
- package/src/config/index.ts +2 -3
- package/src/config/project-security.ts +3 -3
- package/src/config/schema/magic-context.ts +11 -7
- package/src/features/magic-context/dreamer/task-registry.ts +2 -3
- package/src/shared/models-dev-cache.ts +1 -7
- package/src/shared/sqlite-640-review.test.ts +5 -1
- package/src/shared/storage-file-mutex-review.test.ts +162 -0
- package/src/shared/storage-file-mutex.ts +130 -0
- package/src/shared/storage-permissions.ts +46 -0
- package/src/shared/window-geometry.test.ts +102 -236
- package/src/shared/window-geometry.ts +23 -413
- package/dist/config/mural-model-deprecation.d.ts.map +0 -1
- package/dist/index-2jgwttpt.js +0 -3269
- package/dist/index-mfkzp7qj.js +0 -229
- package/dist/v2/server-4ez8mntn.js +0 -3213
- package/dist/v2/server-mfkzp7qj.js +0 -229
- package/src/shared/__fixtures__/window-overlay.v1.json +0 -337
- /package/dist/{index-2pp04pmg.js → index-69vas84q.js} +0 -0
- /package/dist/v2/{index-2pp04pmg.js → index-69vas84q.js} +0 -0
|
@@ -2,7 +2,6 @@ import {
|
|
|
2
2
|
getHarness2
|
|
3
3
|
} from "./index-pavzsdc6.js";
|
|
4
4
|
import {
|
|
5
|
-
getDataDir,
|
|
6
5
|
getMagicContextStorageDir
|
|
7
6
|
} from "./index-0sahzkwr.js";
|
|
8
7
|
import {
|
|
@@ -15,19 +14,16 @@ import {
|
|
|
15
14
|
} from "./index-1zx87sdm.js";
|
|
16
15
|
import {
|
|
17
16
|
writeStorageFileAtomicSync
|
|
18
|
-
} from "./index-
|
|
17
|
+
} from "./index-fvnzcnww.js";
|
|
19
18
|
import {
|
|
20
19
|
modelRefLookupOrder
|
|
21
20
|
} from "./index-avwt563y.js";
|
|
22
21
|
|
|
23
22
|
// src/shared/models-dev-cache.ts
|
|
24
|
-
import { readFileSync as readFileSync2 } from "node:fs";
|
|
25
|
-
import { join as join2 } from "node:path";
|
|
26
|
-
|
|
27
|
-
// src/shared/window-geometry.ts
|
|
28
23
|
import { readFileSync } from "node:fs";
|
|
29
24
|
import { join } from "node:path";
|
|
30
|
-
|
|
25
|
+
|
|
26
|
+
// src/shared/window-geometry.ts
|
|
31
27
|
var PROMPT_WALL_MARGIN = 4096;
|
|
32
28
|
var PI_OUTPUT_FLOOR = 4096;
|
|
33
29
|
var OPENCODE_OUTPUT_CAP = 32000;
|
|
@@ -42,241 +38,10 @@ var PROVIDER_GEOMETRY = {
|
|
|
42
38
|
google: "separate",
|
|
43
39
|
"google-antigravity": "separate"
|
|
44
40
|
};
|
|
45
|
-
var GRADES = new Set([
|
|
46
|
-
"provider_asserted_runtime",
|
|
47
|
-
"measured",
|
|
48
|
-
"provider_asserted_doc",
|
|
49
|
-
"catalog",
|
|
50
|
-
"unknown"
|
|
51
|
-
]);
|
|
52
|
-
var UNITS = new Set(["provider", "estimate"]);
|
|
53
|
-
var BOUNDARIES = new Set(["Observed", "Asserted", "Corrected"]);
|
|
54
|
-
var UNKNOWN_REASONS = new Set([
|
|
55
|
-
"placeholder_output_equals_context",
|
|
56
|
-
"placeholder_zero",
|
|
57
|
-
"never_measured",
|
|
58
|
-
"not_single_valued_at_key",
|
|
59
|
-
"retracted"
|
|
60
|
-
]);
|
|
61
|
-
var NUMERIC_FACT_KEYS = new Set([
|
|
62
|
-
"window.advertised",
|
|
63
|
-
"window.enforced",
|
|
64
|
-
"output.advertised",
|
|
65
|
-
"output.enforced",
|
|
66
|
-
"output.default"
|
|
67
|
-
]);
|
|
68
|
-
var configuredOverlayPath;
|
|
69
|
-
var loadedOverlayPath;
|
|
70
|
-
var loadedOverlay;
|
|
71
41
|
var geometryClampLogSeen = new Set;
|
|
72
|
-
function isRecord(value) {
|
|
73
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
74
|
-
}
|
|
75
42
|
function isFinitePositive(value) {
|
|
76
43
|
return typeof value === "number" && Number.isFinite(value) && value > 0;
|
|
77
44
|
}
|
|
78
|
-
function scalarizeFact(value) {
|
|
79
|
-
if (value.kind === "stated")
|
|
80
|
-
return isFinitePositive(value.value) ? value.value : undefined;
|
|
81
|
-
if (value.kind === "bracket") {
|
|
82
|
-
return isFinitePositive(value.at_least) ? value.at_least : undefined;
|
|
83
|
-
}
|
|
84
|
-
return;
|
|
85
|
-
}
|
|
86
|
-
function parseFactValue(value) {
|
|
87
|
-
if (!isRecord(value) || typeof value.kind !== "string")
|
|
88
|
-
return;
|
|
89
|
-
if (value.kind === "stated") {
|
|
90
|
-
if ((typeof value.value !== "number" || !Number.isFinite(value.value)) && typeof value.value !== "string") {
|
|
91
|
-
return;
|
|
92
|
-
}
|
|
93
|
-
return { kind: "stated", value: value.value };
|
|
94
|
-
}
|
|
95
|
-
if (value.kind === "bracket") {
|
|
96
|
-
const atLeast = value.at_least;
|
|
97
|
-
const below = value.below;
|
|
98
|
-
if (atLeast === undefined && below === undefined)
|
|
99
|
-
return { kind: "bracket" };
|
|
100
|
-
if (atLeast !== undefined && !isFinitePositive(atLeast))
|
|
101
|
-
return;
|
|
102
|
-
if (below !== undefined && !isFinitePositive(below))
|
|
103
|
-
return;
|
|
104
|
-
if (isFinitePositive(atLeast) && isFinitePositive(below) && below <= atLeast) {
|
|
105
|
-
return;
|
|
106
|
-
}
|
|
107
|
-
return {
|
|
108
|
-
kind: "bracket",
|
|
109
|
-
...isFinitePositive(atLeast) ? { at_least: atLeast } : {},
|
|
110
|
-
...isFinitePositive(below) ? { below } : {}
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
if (value.kind === "unknown" && UNKNOWN_REASONS.has(value.why)) {
|
|
114
|
-
return { kind: "unknown", why: value.why };
|
|
115
|
-
}
|
|
116
|
-
return;
|
|
117
|
-
}
|
|
118
|
-
function parseFact(key, value) {
|
|
119
|
-
if (!isRecord(value))
|
|
120
|
-
return;
|
|
121
|
-
const parsedValue = parseFactValue(value.value);
|
|
122
|
-
if (!parsedValue || !GRADES.has(value.grade) || !UNITS.has(value.units) || !BOUNDARIES.has(value.boundary) || typeof value.source_ref !== "string" || value.source_ref.length === 0 || typeof value.observed_at !== "string" || value.observed_at.length === 0) {
|
|
123
|
-
return;
|
|
124
|
-
}
|
|
125
|
-
if (NUMERIC_FACT_KEYS.has(key) && parsedValue.kind === "stated" && !isFinitePositive(parsedValue.value)) {
|
|
126
|
-
return;
|
|
127
|
-
}
|
|
128
|
-
if (key === "geometry" && parsedValue.kind === "stated" && !["shared_upfront", "shared_truncating", "separate"].includes(String(parsedValue.value))) {
|
|
129
|
-
return;
|
|
130
|
-
}
|
|
131
|
-
return {
|
|
132
|
-
...value,
|
|
133
|
-
value: parsedValue,
|
|
134
|
-
grade: value.grade,
|
|
135
|
-
units: value.units,
|
|
136
|
-
boundary: value.boundary,
|
|
137
|
-
source_ref: value.source_ref,
|
|
138
|
-
observed_at: value.observed_at
|
|
139
|
-
};
|
|
140
|
-
}
|
|
141
|
-
function parseWindowOverlay(value) {
|
|
142
|
-
if (!isRecord(value)) {
|
|
143
|
-
return { badCells: 0, refusal: "overlay root is not an object" };
|
|
144
|
-
}
|
|
145
|
-
if (value.schema !== WINDOW_OVERLAY_SCHEMA) {
|
|
146
|
-
return {
|
|
147
|
-
badCells: 0,
|
|
148
|
-
refusal: `unrecognized schema ${JSON.stringify(value.schema)}`
|
|
149
|
-
};
|
|
150
|
-
}
|
|
151
|
-
if (typeof value.generated_at !== "string" || !Array.isArray(value.minted_provider_ids) || !value.minted_provider_ids.every((id) => typeof id === "string" && id.length > 0) || !Array.isArray(value.cells)) {
|
|
152
|
-
return { badCells: 0, refusal: "invalid v1 envelope" };
|
|
153
|
-
}
|
|
154
|
-
const cells = [];
|
|
155
|
-
let badCells = 0;
|
|
156
|
-
for (const rawCell of value.cells) {
|
|
157
|
-
if (!isRecord(rawCell) || typeof rawCell.provider_id !== "string" || rawCell.provider_id.length === 0 || typeof rawCell.model_id !== "string" || rawCell.model_id.length === 0 || !isRecord(rawCell.facts)) {
|
|
158
|
-
badCells++;
|
|
159
|
-
continue;
|
|
160
|
-
}
|
|
161
|
-
const facts = {};
|
|
162
|
-
let valid = true;
|
|
163
|
-
for (const [key, rawFact] of Object.entries(rawCell.facts)) {
|
|
164
|
-
const fact = parseFact(key, rawFact);
|
|
165
|
-
if (!fact) {
|
|
166
|
-
valid = false;
|
|
167
|
-
break;
|
|
168
|
-
}
|
|
169
|
-
facts[key] = fact;
|
|
170
|
-
}
|
|
171
|
-
if (!valid) {
|
|
172
|
-
badCells++;
|
|
173
|
-
continue;
|
|
174
|
-
}
|
|
175
|
-
cells.push({
|
|
176
|
-
provider_id: rawCell.provider_id,
|
|
177
|
-
model_id: rawCell.model_id,
|
|
178
|
-
facts
|
|
179
|
-
});
|
|
180
|
-
}
|
|
181
|
-
return {
|
|
182
|
-
overlay: {
|
|
183
|
-
schema: WINDOW_OVERLAY_SCHEMA,
|
|
184
|
-
generated_at: value.generated_at,
|
|
185
|
-
minted_provider_ids: [...value.minted_provider_ids],
|
|
186
|
-
cells
|
|
187
|
-
},
|
|
188
|
-
badCells
|
|
189
|
-
};
|
|
190
|
-
}
|
|
191
|
-
function defaultWindowOverlayPath() {
|
|
192
|
-
return join(getDataDir(), "fusiform", "window-overlay.json");
|
|
193
|
-
}
|
|
194
|
-
function readWindowOverlayFile(path, log = (message) => sessionLog2("global", message)) {
|
|
195
|
-
let raw;
|
|
196
|
-
try {
|
|
197
|
-
raw = readFileSync(path, "utf8");
|
|
198
|
-
} catch (error) {
|
|
199
|
-
if (error.code === "ENOENT")
|
|
200
|
-
return;
|
|
201
|
-
log(`window-overlay: unable to read ${path}; overlay ignored`);
|
|
202
|
-
return;
|
|
203
|
-
}
|
|
204
|
-
let decoded;
|
|
205
|
-
try {
|
|
206
|
-
decoded = JSON.parse(raw);
|
|
207
|
-
} catch {
|
|
208
|
-
log(`window-overlay: invalid JSON in ${path}; overlay ignored`);
|
|
209
|
-
return;
|
|
210
|
-
}
|
|
211
|
-
const parsed = parseWindowOverlay(decoded);
|
|
212
|
-
if (parsed.refusal) {
|
|
213
|
-
log(`window-overlay: ${parsed.refusal} in ${path}; entire overlay ignored`);
|
|
214
|
-
return;
|
|
215
|
-
}
|
|
216
|
-
if (parsed.badCells > 0) {
|
|
217
|
-
log(`window-overlay: skipped ${parsed.badCells} invalid cell(s) from ${path}`);
|
|
218
|
-
}
|
|
219
|
-
return parsed.overlay;
|
|
220
|
-
}
|
|
221
|
-
function setWindowOverlayPath(path) {
|
|
222
|
-
if (configuredOverlayPath === path)
|
|
223
|
-
return;
|
|
224
|
-
reloadWindowOverlay(path);
|
|
225
|
-
}
|
|
226
|
-
function reloadWindowOverlay(path) {
|
|
227
|
-
configuredOverlayPath = path;
|
|
228
|
-
loadedOverlayPath = undefined;
|
|
229
|
-
loadedOverlay = undefined;
|
|
230
|
-
}
|
|
231
|
-
function getWindowOverlay() {
|
|
232
|
-
const path = configuredOverlayPath ?? defaultWindowOverlayPath();
|
|
233
|
-
if (loadedOverlayPath === path && loadedOverlay !== undefined) {
|
|
234
|
-
return loadedOverlay ?? undefined;
|
|
235
|
-
}
|
|
236
|
-
loadedOverlayPath = path;
|
|
237
|
-
loadedOverlay = readWindowOverlayFile(path) ?? null;
|
|
238
|
-
return loadedOverlay ?? undefined;
|
|
239
|
-
}
|
|
240
|
-
function resolveWindowOverlayFacts(providerID, modelID, overlay = getWindowOverlay()) {
|
|
241
|
-
if (!overlay)
|
|
242
|
-
return;
|
|
243
|
-
const modelRefs = modelRefLookupOrder(`${providerID}/${modelID}`);
|
|
244
|
-
const providerCandidates = new Set(modelRefs.map((ref) => ref.slice(0, ref.indexOf("/"))));
|
|
245
|
-
const modelCandidates = new Set([
|
|
246
|
-
modelID,
|
|
247
|
-
...modelRefs.map((ref) => ref.slice(ref.indexOf("/") + 1))
|
|
248
|
-
]);
|
|
249
|
-
const colon = modelID.lastIndexOf(":");
|
|
250
|
-
if (colon > 0)
|
|
251
|
-
modelCandidates.add(modelID.slice(0, colon));
|
|
252
|
-
const wildcardFacts = {};
|
|
253
|
-
const specificFacts = {};
|
|
254
|
-
for (const cell of overlay.cells) {
|
|
255
|
-
if (!providerCandidates.has(cell.provider_id))
|
|
256
|
-
continue;
|
|
257
|
-
if (cell.model_id === "*")
|
|
258
|
-
Object.assign(wildcardFacts, cell.facts);
|
|
259
|
-
else if (modelCandidates.has(cell.model_id))
|
|
260
|
-
Object.assign(specificFacts, cell.facts);
|
|
261
|
-
}
|
|
262
|
-
const facts = { ...wildcardFacts, ...specificFacts };
|
|
263
|
-
return Object.keys(facts).length > 0 ? { facts } : undefined;
|
|
264
|
-
}
|
|
265
|
-
function numericOverlayFact(overlay, key) {
|
|
266
|
-
const fact = overlay?.facts[key];
|
|
267
|
-
return fact ? scalarizeFact(fact.value) : undefined;
|
|
268
|
-
}
|
|
269
|
-
function overlayGeometry(overlay) {
|
|
270
|
-
const fact = overlay?.facts.geometry;
|
|
271
|
-
if (fact === undefined)
|
|
272
|
-
return;
|
|
273
|
-
if (fact.value.kind === "unknown")
|
|
274
|
-
return { kind: "unknown" };
|
|
275
|
-
if (fact.value.kind !== "stated")
|
|
276
|
-
return;
|
|
277
|
-
const value = fact.value.value;
|
|
278
|
-
return value === "shared_upfront" || value === "shared_truncating" || value === "separate" ? { kind: "stated", value } : undefined;
|
|
279
|
-
}
|
|
280
45
|
function placeholderFilteredOutput(output, context) {
|
|
281
46
|
if (!isFinitePositive(output))
|
|
282
47
|
return;
|
|
@@ -284,8 +49,8 @@ function placeholderFilteredOutput(output, context) {
|
|
|
284
49
|
return;
|
|
285
50
|
return output;
|
|
286
51
|
}
|
|
287
|
-
function mergePositive(
|
|
288
|
-
return isFinitePositive(providerValue) ? providerValue :
|
|
52
|
+
function mergePositive(catalogValue, providerValue) {
|
|
53
|
+
return isFinitePositive(providerValue) ? providerValue : catalogValue;
|
|
289
54
|
}
|
|
290
55
|
function logGeometryClampOnce(key, message, log) {
|
|
291
56
|
if (geometryClampLogSeen.has(key))
|
|
@@ -299,10 +64,8 @@ function deriveWindowGeometry(providerID, modelID, catalogLimit, options = {}) {
|
|
|
299
64
|
const providerLimit = options.providerLimit;
|
|
300
65
|
const catalogContext = isFinitePositive(catalogLimit?.context) ? catalogLimit.context : undefined;
|
|
301
66
|
const providerContext = isFinitePositive(providerLimit?.context) ? providerLimit.context : undefined;
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
let softContext = mergePositive(enforced ?? advertised ?? catalogContext, providerContext);
|
|
305
|
-
let hardContext = mergePositive(enforced ?? softContext, providerContext);
|
|
67
|
+
let softContext = mergePositive(catalogContext, providerContext);
|
|
68
|
+
let hardContext = mergePositive(softContext, providerContext);
|
|
306
69
|
const contextCap = isFinitePositive(options.contextCap) ? options.contextCap : undefined;
|
|
307
70
|
const hasContextCap = contextCap !== undefined;
|
|
308
71
|
if (contextCap !== undefined) {
|
|
@@ -312,13 +75,10 @@ function deriveWindowGeometry(providerID, modelID, catalogLimit, options = {}) {
|
|
|
312
75
|
const input = mergePositive(isFinitePositive(catalogLimit?.input) ? catalogLimit.input : undefined, providerLimit?.input);
|
|
313
76
|
if (!isFinitePositive(softContext) && !isFinitePositive(input))
|
|
314
77
|
return;
|
|
315
|
-
const catalogOutput = options.
|
|
316
|
-
const overlayOutput = placeholderFilteredOutput(numericOverlayFact(options.overlay, "output.enforced") ?? numericOverlayFact(options.overlay, "output.default") ?? numericOverlayFact(options.overlay, "output.advertised"), softContext);
|
|
78
|
+
const catalogOutput = options.providerLimit === undefined ? isFinitePositive(catalogLimit?.output) ? catalogLimit.output : undefined : placeholderFilteredOutput(catalogLimit?.output, softContext);
|
|
317
79
|
const providerOutput = placeholderFilteredOutput(providerLimit?.output, softContext);
|
|
318
|
-
const output = providerOutput ??
|
|
319
|
-
const
|
|
320
|
-
const geometry = geometryFact?.kind === "stated" ? geometryFact.value : geometryFact?.kind === "unknown" ? "shared_upfront" : PROVIDER_GEOMETRY[providerID] ?? "shared_upfront";
|
|
321
|
-
const geometryOverride = geometryFact?.kind === "stated" ? geometryFact.value : undefined;
|
|
80
|
+
const output = providerOutput ?? catalogOutput;
|
|
81
|
+
const geometry = PROVIDER_GEOMETRY[providerID] ?? "shared_upfront";
|
|
322
82
|
const preCarvedInput = isFinitePositive(input) && (!isFinitePositive(softContext) || input < softContext);
|
|
323
83
|
const outputReserveOverride = typeof options.outputReserveOverride === "number" && Number.isFinite(options.outputReserveOverride) && options.outputReserveOverride >= 0 ? options.outputReserveOverride : undefined;
|
|
324
84
|
let derivationWindow = softContext ?? input;
|
|
@@ -346,14 +106,14 @@ function deriveWindowGeometry(providerID, modelID, catalogLimit, options = {}) {
|
|
|
346
106
|
reserveSource = "output_catalog";
|
|
347
107
|
}
|
|
348
108
|
} else if (isFinitePositive(softContext)) {
|
|
349
|
-
if (geometry === "separate"
|
|
109
|
+
if (geometry === "separate") {
|
|
350
110
|
softReserve = 0;
|
|
351
111
|
reserveSource = "none";
|
|
352
112
|
} else {
|
|
353
113
|
softReserve = output ?? 0;
|
|
354
114
|
reserveSource = output === undefined ? "none" : "output_catalog";
|
|
355
115
|
const cap = softContext * OUTPUT_RESERVE_CAP_RATIO;
|
|
356
|
-
softReserve = Math.min(softReserve,
|
|
116
|
+
softReserve = Math.min(softReserve, cap);
|
|
357
117
|
}
|
|
358
118
|
const floor = Math.max(MIN_PLAUSIBLE_CONTEXT_LIMIT, softContext * 0.5);
|
|
359
119
|
const flooredReserve = Math.min(softReserve, Math.max(0, softContext - floor));
|
|
@@ -368,7 +128,7 @@ function deriveWindowGeometry(providerID, modelID, catalogLimit, options = {}) {
|
|
|
368
128
|
const hardWindow = hardContext ?? softContext ?? input;
|
|
369
129
|
if (!isFinitePositive(hardWindow))
|
|
370
130
|
return;
|
|
371
|
-
const windowSource = hasContextCap ? "detected" : providerContext !== undefined ? "provider" :
|
|
131
|
+
const windowSource = hasContextCap ? "detected" : providerContext !== undefined ? "provider" : "catalog";
|
|
372
132
|
let usableHard;
|
|
373
133
|
if (geometry === "separate") {
|
|
374
134
|
usableHard = hardWindow;
|
|
@@ -384,7 +144,7 @@ function deriveWindowGeometry(providerID, modelID, catalogLimit, options = {}) {
|
|
|
384
144
|
}
|
|
385
145
|
usableHard = Math.max(MIN_PLAUSIBLE_CONTEXT_LIMIT, Math.floor(usableHard));
|
|
386
146
|
if (usableHard < usableSoft) {
|
|
387
|
-
logGeometryClampOnce(`${providerID}/${modelID}|${usableSoft}|${usableHard}`, `usable hard limit clamped for ${providerID}/${modelID}: ${usableHard} → ${usableSoft} (
|
|
147
|
+
logGeometryClampOnce(`${providerID}/${modelID}|${usableSoft}|${usableHard}`, `usable hard limit clamped for ${providerID}/${modelID}: ${usableHard} → ${usableSoft} (window limit inversion)`, options.log);
|
|
388
148
|
usableHard = usableSoft;
|
|
389
149
|
}
|
|
390
150
|
const resolvedWindow = derivationWindow ?? usableSoft;
|
|
@@ -464,14 +224,14 @@ var apiCache = null;
|
|
|
464
224
|
var apiLoadedAt = 0;
|
|
465
225
|
var persistSeedLoaded = false;
|
|
466
226
|
function persistFilePath() {
|
|
467
|
-
return
|
|
227
|
+
return join(getMagicContextStorageDir(), `model-context-limits-${getHarness2()}.json`);
|
|
468
228
|
}
|
|
469
229
|
function loadPersistedApiCacheOnce() {
|
|
470
230
|
if (persistSeedLoaded || apiCache !== null)
|
|
471
231
|
return;
|
|
472
232
|
persistSeedLoaded = true;
|
|
473
233
|
try {
|
|
474
|
-
const raw =
|
|
234
|
+
const raw = readFileSync(persistFilePath(), "utf-8");
|
|
475
235
|
const obj = JSON.parse(raw);
|
|
476
236
|
const map = new Map;
|
|
477
237
|
for (const [key, persisted] of Object.entries(obj)) {
|
|
@@ -670,7 +430,6 @@ function getSdkWindowGeometry(providerID, modelID, detectedContextLimit, options
|
|
|
670
430
|
input: metadata.inputLimit,
|
|
671
431
|
output: metadata.outputLimit
|
|
672
432
|
}, {
|
|
673
|
-
overlay: resolveWindowOverlayFacts(providerID, modelID, getWindowOverlay()),
|
|
674
433
|
outputReserveOverride: resolveOutputReserve(providerID, modelID),
|
|
675
434
|
harness: options?.harness ?? "opencode",
|
|
676
435
|
contextCap: promptOnlyDetected === undefined && isFinitePositive2(detectedContextLimit) ? detectedContextLimit : undefined
|
|
@@ -819,4 +578,4 @@ function producerSourceLocalBudget2(providerTokens, modelKey) {
|
|
|
819
578
|
return ratio === 1 ? providerTokens : localBudget(providerTokens, ratio);
|
|
820
579
|
}
|
|
821
580
|
|
|
822
|
-
export { catalogOutputReserve,
|
|
581
|
+
export { catalogOutputReserve, hasTrustedAbsoluteWall, applyProvenInputFloor, formatWindowDerivationLine, isSaneLimit, setOutputReserveConfig, resolveLimit, refreshModelLimitsFromApi, refreshModelLimitsAfterAuthOnce, getSdkWindowGeometry, getSdkContextLimit, modelSupportsVision, getSdkOutputLimit, getModelsDevCacheState, deriveTriggerBudget2, deriveHistorianChunkTokens2, resolveKnownHistorianContextLimit2, resolveHistorianProducerLimits2, resolveHistorianContextLimit2, producerSourceLocalBudget2 };
|