@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.
Files changed (195) hide show
  1. package/dist/{announcement-fp14dw0n.js → announcement-hdbkt8v5.js} +1 -1
  2. package/dist/auto-search-worker.js +3 -3
  3. package/dist/config/{mural-model-deprecation.d.ts → deprecated-config.d.ts} +4 -1
  4. package/dist/config/deprecated-config.d.ts.map +1 -0
  5. package/dist/config/index.d.ts.map +1 -1
  6. package/dist/config/project-security.d.ts +2 -2
  7. package/dist/config/schema/magic-context.d.ts +4 -4
  8. package/dist/config/schema/magic-context.d.ts.map +1 -1
  9. package/dist/{conflict-warning-hook-kzx4dmk1.js → conflict-warning-hook-asnt6hfc.js} +3 -3
  10. package/dist/{context-nj5f293n.js → context-tfyhtdcs.js} +111 -45
  11. package/dist/{derive-budgets-qz5rrr08.js → derive-budgets-j4ry8j8n.js} +1 -1
  12. package/dist/{embedding-backfill-aetxv1vt.js → embedding-backfill-wyc3ykyf.js} +7 -7
  13. package/dist/embedding-worker-process.js +30 -0
  14. package/dist/embedding-worker.js +5 -5
  15. package/dist/features/magic-context/dreamer/task-registry.d.ts +2 -3
  16. package/dist/features/magic-context/dreamer/task-registry.d.ts.map +1 -1
  17. package/dist/features/magic-context/memory/embedding-worker-client.d.ts +8 -1
  18. package/dist/features/magic-context/memory/embedding-worker-client.d.ts.map +1 -1
  19. package/dist/features/magic-context/memory/embedding-worker-process.d.ts +2 -0
  20. package/dist/features/magic-context/memory/embedding-worker-process.d.ts.map +1 -0
  21. package/dist/features/magic-context/memory/onnx-telemetry.d.ts +3 -0
  22. package/dist/features/magic-context/memory/onnx-telemetry.d.ts.map +1 -0
  23. package/dist/features/magic-context/overflow-detection.d.ts +1 -2
  24. package/dist/features/magic-context/overflow-detection.d.ts.map +1 -1
  25. package/dist/features/magic-context/storage-session-tables.d.ts.map +1 -1
  26. package/dist/features/magic-context/transform-decision-log.d.ts +1 -1
  27. package/dist/features/magic-context/transform-decision-log.d.ts.map +1 -1
  28. package/dist/features/magic-context/user-memory/storage-user-memory.d.ts +1 -0
  29. package/dist/features/magic-context/user-memory/storage-user-memory.d.ts.map +1 -1
  30. package/dist/hooks/magic-context/event-handler.d.ts.map +1 -1
  31. package/dist/hooks/magic-context/final-wire-token-estimate.d.ts +1 -0
  32. package/dist/hooks/magic-context/final-wire-token-estimate.d.ts.map +1 -1
  33. package/dist/hooks/magic-context/hook-handlers.d.ts.map +1 -1
  34. package/dist/hooks/magic-context/hook.d.ts +1 -0
  35. package/dist/hooks/magic-context/hook.d.ts.map +1 -1
  36. package/dist/hooks/magic-context/inject-compartments.d.ts.map +1 -1
  37. package/dist/hooks/magic-context/lkg-measured-request.d.ts +3 -1
  38. package/dist/hooks/magic-context/lkg-measured-request.d.ts.map +1 -1
  39. package/dist/hooks/magic-context/lkg-persist.d.ts +8 -14
  40. package/dist/hooks/magic-context/lkg-persist.d.ts.map +1 -1
  41. package/dist/hooks/magic-context/lkg-recovery-fence.d.ts +62 -0
  42. package/dist/hooks/magic-context/lkg-recovery-fence.d.ts.map +1 -0
  43. package/dist/hooks/magic-context/lkg-recovery-prefix.d.ts +38 -0
  44. package/dist/hooks/magic-context/lkg-recovery-prefix.d.ts.map +1 -0
  45. package/dist/hooks/magic-context/lkg-replay.d.ts +3 -1
  46. package/dist/hooks/magic-context/lkg-replay.d.ts.map +1 -1
  47. package/dist/hooks/magic-context/lkg-slot.d.ts.map +1 -1
  48. package/dist/hooks/magic-context/opaque-thinking.d.ts +12 -0
  49. package/dist/hooks/magic-context/opaque-thinking.d.ts.map +1 -0
  50. package/dist/hooks/magic-context/pass-outcome.d.ts +2 -2
  51. package/dist/hooks/magic-context/pending-materialization.d.ts +8 -0
  52. package/dist/hooks/magic-context/pending-materialization.d.ts.map +1 -0
  53. package/dist/hooks/magic-context/read-session-db.d.ts +3 -0
  54. package/dist/hooks/magic-context/read-session-db.d.ts.map +1 -1
  55. package/dist/hooks/magic-context/recomp-orchestrator.d.ts.map +1 -1
  56. package/dist/hooks/magic-context/rust-mode-transform.d.ts +1 -0
  57. package/dist/hooks/magic-context/rust-mode-transform.d.ts.map +1 -1
  58. package/dist/hooks/magic-context/strip-content.d.ts +5 -2
  59. package/dist/hooks/magic-context/strip-content.d.ts.map +1 -1
  60. package/dist/hooks/magic-context/system-date-refresh.d.ts +29 -0
  61. package/dist/hooks/magic-context/system-date-refresh.d.ts.map +1 -0
  62. package/dist/hooks/magic-context/system-prompt-dates.d.ts +6 -0
  63. package/dist/hooks/magic-context/system-prompt-dates.d.ts.map +1 -0
  64. package/dist/hooks/magic-context/system-prompt-delivery.d.ts +47 -0
  65. package/dist/hooks/magic-context/system-prompt-delivery.d.ts.map +1 -0
  66. package/dist/hooks/magic-context/system-prompt-hash.d.ts +4 -0
  67. package/dist/hooks/magic-context/system-prompt-hash.d.ts.map +1 -1
  68. package/dist/hooks/magic-context/tag-messages.d.ts +8 -0
  69. package/dist/hooks/magic-context/tag-messages.d.ts.map +1 -1
  70. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts +2 -0
  71. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts.map +1 -1
  72. package/dist/hooks/magic-context/transform.d.ts +6 -0
  73. package/dist/hooks/magic-context/transform.d.ts.map +1 -1
  74. package/dist/{index-9qjqq45k.js → index-0pjvpfkf.js} +21 -1
  75. package/dist/index-6m7rdv7y.js +733 -0
  76. package/dist/{index-1r0k9js3.js → index-6tfxmc4n.js} +10 -10
  77. package/dist/{index-gzcmtmar.js → index-7w18gg78.js} +25 -1
  78. package/dist/{index-nm6a8xpd.js → index-att4bfan.js} +1 -1
  79. package/dist/{index-ezmszwbd.js → index-eypn4ba6.js} +7 -4
  80. package/dist/{index-ha87j7a8.js → index-fdtkt5r1.js} +6 -6
  81. package/dist/{index-kp5qe690.js → index-fg00p1cg.js} +38 -36
  82. package/dist/{index-1bc61ans.js → index-fvnzcnww.js} +44 -1
  83. package/dist/index-gbmqa9x9.js +1170 -0
  84. package/dist/{index-pxwp2hjk.js → index-gzky5rva.js} +30 -53
  85. package/dist/{index-kq57tdf0.js → index-k6xvbj2e.js} +255 -1075
  86. package/dist/{index-0w56v4fm.js → index-mw7c950g.js} +1 -1
  87. package/dist/{index-1g30axtz.js → index-p0n5ryq8.js} +82 -900
  88. package/dist/{index-b7mv1jx3.js → index-p1hnwfd8.js} +1 -1
  89. package/dist/{index-peshmj6h.js → index-r2zcs71c.js} +6 -4
  90. package/dist/{index-kmpvemph.js → index-rafsaxac.js} +2 -2
  91. package/dist/{index-stbr4ce6.js → index-s7fc0fkn.js} +1 -1
  92. package/dist/{index-hj2q50k0.js → index-sfhndpcb.js} +463 -6
  93. package/dist/index-sv0bb7vg.js +6972 -0
  94. package/dist/{index-57mrqed8.js → index-w23dh319.js} +17 -258
  95. package/dist/{index-9rt53q79.js → index-xgrwmj82.js} +1 -1
  96. package/dist/{index-h2py7207.js → index-xnanvj3w.js} +765 -1255
  97. package/dist/{index-2jcbj7r1.js → index-zfzdpeq2.js} +2269 -3802
  98. package/dist/{index-s4j7t92z.js → index-zg8yq4ya.js} +29 -744
  99. package/dist/index.d.ts.map +1 -1
  100. package/dist/index.js +209 -61
  101. package/dist/{message-index-bounded-h0mrd4pr.js → message-index-bounded-hqktkhdy.js} +7 -6
  102. package/dist/migration-worker.js +6 -5
  103. package/dist/plugin/hooks/create-session-hooks.d.ts +3 -1
  104. package/dist/plugin/hooks/create-session-hooks.d.ts.map +1 -1
  105. package/dist/plugin/messages-transform.d.ts.map +1 -1
  106. package/dist/plugin/rpc-handlers.d.ts.map +1 -1
  107. package/dist/{project-embedding-registry-rtt0djyb.js → project-embedding-registry-0gv3h6y8.js} +6 -6
  108. package/dist/raw-ordinal-warmup-worker.js +1 -1
  109. package/dist/{read-session-chunk-ty89v75e.js → read-session-chunk-5mh0bh8y.js} +5 -4
  110. package/dist/{recomp-orchestrator-4f1yyd1q.js → recomp-orchestrator-kpkhkjhq.js} +20 -19
  111. package/dist/{search-pz4f4wge.js → search-p9w39qv4.js} +15 -14
  112. package/dist/{send-session-notification-38cd5dqt.js → send-session-notification-xffh3bbe.js} +2 -2
  113. package/dist/shared/models-dev-cache.d.ts.map +1 -1
  114. package/dist/shared/storage-file-mutex.d.ts +9 -0
  115. package/dist/shared/storage-file-mutex.d.ts.map +1 -0
  116. package/dist/shared/storage-permissions.d.ts +6 -0
  117. package/dist/shared/storage-permissions.d.ts.map +1 -1
  118. package/dist/shared/window-geometry.d.ts +9 -66
  119. package/dist/shared/window-geometry.d.ts.map +1 -1
  120. package/dist/standalone-plugin-marker.d.ts +8 -0
  121. package/dist/standalone-plugin-marker.d.ts.map +1 -0
  122. package/dist/tools/ctx-reduce/constants.d.ts +1 -2
  123. package/dist/tools/ctx-reduce/constants.d.ts.map +1 -1
  124. package/dist/tools/ctx-reduce/tools.d.ts +1 -1
  125. package/dist/tools/ctx-reduce/tools.d.ts.map +1 -1
  126. package/dist/{transform-postprocess-phase-tck4g20s.js → transform-postprocess-phase-481j5a7z.js} +20 -19
  127. package/dist/v2/auto-search-worker.js +3 -3
  128. package/dist/v2/{context-crbt6p1y.js → context-gsdtha5v.js} +873 -2122
  129. package/dist/v2/{derive-budgets-fgej9j46.js → derive-budgets-enckmg7y.js} +2 -2
  130. package/dist/v2/{embedding-backfill-ph1qfyn3.js → embedding-backfill-dbvjbcmm.js} +8 -9
  131. package/dist/v2/embedding-worker-process.js +29 -0
  132. package/dist/v2/embedding-worker.js +3 -4
  133. package/dist/v2/hooks/context.d.ts.map +1 -1
  134. package/dist/v2/hooks/copied-tag-notation.d.ts +19 -0
  135. package/dist/v2/hooks/copied-tag-notation.d.ts.map +1 -0
  136. package/dist/v2/hooks/payload.d.ts.map +1 -1
  137. package/dist/v2/hooks/system-prompt-response.d.ts +5 -0
  138. package/dist/v2/hooks/system-prompt-response.d.ts.map +1 -0
  139. package/dist/v2/{message-index-bounded-xwqdywxg.js → message-index-bounded-p6v0n8qh.js} +8 -7
  140. package/dist/v2/migration-worker.js +6 -5
  141. package/dist/v2/{project-embedding-registry-d6m7tyxr.js → project-embedding-registry-nyq7z8y6.js} +7 -8
  142. package/dist/v2/raw-ordinal-warmup-worker.js +2 -2
  143. package/dist/v2/{read-session-chunk-8p5mdryx.js → read-session-chunk-fhyfe4qa.js} +6 -5
  144. package/dist/v2/{recomp-orchestrator-ckfgt6wq.js → recomp-orchestrator-5xy7w136.js} +22 -22
  145. package/dist/v2/{search-ym8rehhz.js → search-j7bakcwa.js} +17 -17
  146. package/dist/v2/{send-session-notification-5m0yapqx.js → send-session-notification-f6v698r5.js} +2 -2
  147. package/dist/v2/{server-jvxzm1jy.js → server-1fszbabv.js} +28 -28
  148. package/dist/v2/{server-3j4d00kf.js → server-2htmbqbv.js} +25 -1
  149. package/dist/v2/{server-c5rrgrcd.js → server-4c7jt8gq.js} +25 -1
  150. package/dist/v2/{server-ycw9qqcy.js → server-4enr7s6x.js} +1 -1
  151. package/dist/v2/{server-v4mewb78.js → server-6tcrjfw8.js} +1 -1
  152. package/dist/v2/{server-x4hscabv.js → server-7spkq1y6.js} +2257 -3746
  153. package/dist/v2/{server-sa8jvrfc.js → server-7vkj6zhb.js} +29 -744
  154. package/dist/v2/{server-xwz4dqh9.js → server-8xmq9h3f.js} +30 -53
  155. package/dist/v2/{server-1tk82krw.js → server-bgzy0phk.js} +463 -6
  156. package/dist/v2/server-c7n2ftng.js +6860 -0
  157. package/dist/v2/server-cvgn49tr.js +733 -0
  158. package/dist/v2/{server-zm570tr2.js → server-cw6521wn.js} +232 -7
  159. package/dist/v2/{server-pj4pjv02.js → server-czb2rkpk.js} +21 -1
  160. package/dist/v2/{server-19zjmn02.js → server-d6g4whc2.js} +20 -14
  161. package/dist/v2/{server-1bc61ans.js → server-fvnzcnww.js} +44 -1
  162. package/dist/v2/{server-w32kmdez.js → server-kh958yj8.js} +3 -3
  163. package/dist/v2/{server-q4ph9bwn.js → server-mqvtz7wz.js} +7 -7
  164. package/dist/v2/{server-2s6ayq3t.js → server-ras2sxnc.js} +133 -13
  165. package/dist/v2/{server-ss95ky04.js → server-s2st631p.js} +1 -1
  166. package/dist/v2/{server-2s9qz6n7.js → server-t528t8qm.js} +1 -1
  167. package/dist/v2/{server-8k2agx29.js → server-vb7pbd9p.js} +17 -258
  168. package/dist/v2/{server-zp53y8js.js → server-zbxjj2mz.js} +2 -2
  169. package/dist/v2/server.d.ts.map +1 -1
  170. package/dist/v2/server.js +149 -5
  171. package/dist/v2/{storage-tags-8vw924zn.js → storage-tags-5yxrvkaf.js} +1 -1
  172. package/dist/v2/{wrapup-orchestrator-a7efxaax.js → wrapup-orchestrator-yem5422s.js} +28 -28
  173. package/dist/{wrapup-orchestrator-barbc6h9.js → wrapup-orchestrator-xvrr27ws.js} +21 -20
  174. package/package.json +4 -4
  175. package/src/config/{mural-model-deprecation.ts → deprecated-config.ts} +19 -0
  176. package/src/config/index.test.ts +15 -37
  177. package/src/config/index.ts +2 -3
  178. package/src/config/project-security.ts +3 -3
  179. package/src/config/schema/magic-context.ts +11 -7
  180. package/src/features/magic-context/dreamer/task-registry.ts +2 -3
  181. package/src/shared/models-dev-cache.ts +1 -7
  182. package/src/shared/sqlite-640-review.test.ts +5 -1
  183. package/src/shared/storage-file-mutex-review.test.ts +162 -0
  184. package/src/shared/storage-file-mutex.ts +130 -0
  185. package/src/shared/storage-permissions.ts +46 -0
  186. package/src/shared/window-geometry.test.ts +102 -236
  187. package/src/shared/window-geometry.ts +23 -413
  188. package/dist/config/mural-model-deprecation.d.ts.map +0 -1
  189. package/dist/index-2jgwttpt.js +0 -3269
  190. package/dist/index-mfkzp7qj.js +0 -229
  191. package/dist/v2/server-4ez8mntn.js +0 -3213
  192. package/dist/v2/server-mfkzp7qj.js +0 -229
  193. package/src/shared/__fixtures__/window-overlay.v1.json +0 -337
  194. /package/dist/{index-2pp04pmg.js → index-69vas84q.js} +0 -0
  195. /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-1bc61ans.js";
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
- var WINDOW_OVERLAY_SCHEMA = "fusiform-window-overlay/v1";
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(overlayValue, providerValue) {
288
- return isFinitePositive(providerValue) ? providerValue : overlayValue;
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
- const advertised = numericOverlayFact(options.overlay, "window.advertised");
303
- const enforced = numericOverlayFact(options.overlay, "window.enforced");
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.overlay === undefined && options.providerLimit === undefined ? isFinitePositive(catalogLimit?.output) ? catalogLimit.output : undefined : placeholderFilteredOutput(catalogLimit?.output, softContext);
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 ?? overlayOutput ?? catalogOutput;
319
- const geometryFact = overlayGeometry(options.overlay);
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" && (options.overlay === undefined || options.harness === "pi" || geometryOverride !== undefined)) {
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, options.harness === "pi" || options.overlay === undefined ? cap : Math.min(cap, OPENCODE_OUTPUT_CAP));
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" : enforced !== undefined || advertised !== undefined ? "overlay" : "catalog";
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} (overlay/provider inversion)`, options.log);
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 join2(getMagicContextStorageDir(), `model-context-limits-${getHarness2()}.json`);
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 = readFileSync2(persistFilePath(), "utf-8");
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, setWindowOverlayPath, reloadWindowOverlay, hasTrustedAbsoluteWall, applyProvenInputFloor, formatWindowDerivationLine, isSaneLimit, setOutputReserveConfig, resolveLimit, refreshModelLimitsFromApi, refreshModelLimitsAfterAuthOnce, getSdkWindowGeometry, getSdkContextLimit, modelSupportsVision, getSdkOutputLimit, getModelsDevCacheState, deriveTriggerBudget2, deriveHistorianChunkTokens2, resolveKnownHistorianContextLimit2, resolveHistorianProducerLimits2, resolveHistorianContextLimit2, producerSourceLocalBudget2 };
581
+ export { catalogOutputReserve, hasTrustedAbsoluteWall, applyProvenInputFloor, formatWindowDerivationLine, isSaneLimit, setOutputReserveConfig, resolveLimit, refreshModelLimitsFromApi, refreshModelLimitsAfterAuthOnce, getSdkWindowGeometry, getSdkContextLimit, modelSupportsVision, getSdkOutputLimit, getModelsDevCacheState, deriveTriggerBudget2, deriveHistorianChunkTokens2, resolveKnownHistorianContextLimit2, resolveHistorianProducerLimits2, resolveHistorianContextLimit2, producerSourceLocalBudget2 };
@@ -10,7 +10,7 @@ import {
10
10
  } from "./index-tqf7yg27.js";
11
11
  import {
12
12
  shouldHoldIgnoredNotification
13
- } from "./index-9qjqq45k.js";
13
+ } from "./index-0pjvpfkf.js";
14
14
  import {
15
15
  getErrorMessage
16
16
  } from "./index-y8v6yerm.js";