@retaw106/mmc-oc 1.2.3 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (290) hide show
  1. package/dist/cli.js +7095 -0
  2. package/dist/config/index.d.ts +0 -12
  3. package/dist/config/index.d.ts.map +1 -1
  4. package/dist/config/legacy-harness-blocks.d.ts +27 -0
  5. package/dist/config/legacy-harness-blocks.d.ts.map +1 -0
  6. package/dist/config/live-run-config.d.ts.map +1 -1
  7. package/dist/config/live-snapshot.d.ts +2 -1
  8. package/dist/config/live-snapshot.d.ts.map +1 -1
  9. package/dist/config/project-security.d.ts +4 -5
  10. package/dist/config/project-security.d.ts.map +1 -1
  11. package/dist/config/raw-loader.d.ts +7 -26
  12. package/dist/config/raw-loader.d.ts.map +1 -1
  13. package/dist/config/schema/magic-context.d.ts +164 -259
  14. package/dist/config/schema/magic-context.d.ts.map +1 -1
  15. package/dist/config/variable.d.ts +8 -0
  16. package/dist/config/variable.d.ts.map +1 -1
  17. package/dist/config-init.js +5595 -0
  18. package/dist/{context-a6px04s0.js → context-vhcstgs3.js} +5758 -4727
  19. package/dist/{derive-budgets-fhk00zv8.js → derive-budgets-rjjz5f7y.js} +2 -2
  20. package/dist/features/magic-context/compaction-marker.d.ts.map +1 -1
  21. package/dist/features/magic-context/memory/types.d.ts +1 -0
  22. package/dist/features/magic-context/memory/types.d.ts.map +1 -1
  23. package/dist/features/magic-context/message-index.d.ts +2 -0
  24. package/dist/features/magic-context/message-index.d.ts.map +1 -1
  25. package/dist/features/magic-context/migration-v3-perf-schema.d.ts +8 -0
  26. package/dist/features/magic-context/migration-v3-perf-schema.d.ts.map +1 -0
  27. package/dist/features/magic-context/migration-v4-temporal-decisions.d.ts +12 -0
  28. package/dist/features/magic-context/migration-v4-temporal-decisions.d.ts.map +1 -0
  29. package/dist/features/magic-context/migrations.d.ts.map +1 -1
  30. package/dist/features/magic-context/overflow-detection.d.ts +6 -0
  31. package/dist/features/magic-context/overflow-detection.d.ts.map +1 -1
  32. package/dist/features/magic-context/reclaim-protection.d.ts +15 -10
  33. package/dist/features/magic-context/reclaim-protection.d.ts.map +1 -1
  34. package/dist/features/magic-context/session-cache-ttl.d.ts +4 -2
  35. package/dist/features/magic-context/session-cache-ttl.d.ts.map +1 -1
  36. package/dist/features/magic-context/session-project-storage.d.ts +8 -2
  37. package/dist/features/magic-context/session-project-storage.d.ts.map +1 -1
  38. package/dist/features/magic-context/storage-db.d.ts +1 -1
  39. package/dist/features/magic-context/storage-db.d.ts.map +1 -1
  40. package/dist/features/magic-context/storage-historian-runs.d.ts +2 -0
  41. package/dist/features/magic-context/storage-historian-runs.d.ts.map +1 -1
  42. package/dist/features/magic-context/storage-meta-persisted.d.ts +12 -0
  43. package/dist/features/magic-context/storage-meta-persisted.d.ts.map +1 -1
  44. package/dist/features/magic-context/storage-meta-session.d.ts +6 -0
  45. package/dist/features/magic-context/storage-meta-session.d.ts.map +1 -1
  46. package/dist/features/magic-context/storage-ops.d.ts +2 -0
  47. package/dist/features/magic-context/storage-ops.d.ts.map +1 -1
  48. package/dist/features/magic-context/storage-session-tables.d.ts.map +1 -1
  49. package/dist/features/magic-context/storage-tags.d.ts +17 -4
  50. package/dist/features/magic-context/storage-tags.d.ts.map +1 -1
  51. package/dist/features/magic-context/storage.d.ts +2 -2
  52. package/dist/features/magic-context/storage.d.ts.map +1 -1
  53. package/dist/features/magic-context/temporal-decisions.d.ts +10 -0
  54. package/dist/features/magic-context/temporal-decisions.d.ts.map +1 -0
  55. package/dist/features/magic-context/tool-definition-tokens.d.ts +3 -0
  56. package/dist/features/magic-context/tool-definition-tokens.d.ts.map +1 -1
  57. package/dist/features/magic-context/transform-decision-log.d.ts +3 -1
  58. package/dist/features/magic-context/transform-decision-log.d.ts.map +1 -1
  59. package/dist/hooks/magic-context/active-anthropic-turn.d.ts +8 -0
  60. package/dist/hooks/magic-context/active-anthropic-turn.d.ts.map +1 -0
  61. package/dist/hooks/magic-context/apply-operations.d.ts +15 -0
  62. package/dist/hooks/magic-context/apply-operations.d.ts.map +1 -1
  63. package/dist/hooks/magic-context/auto-search-deadline.d.ts +10 -3
  64. package/dist/hooks/magic-context/auto-search-deadline.d.ts.map +1 -1
  65. package/dist/hooks/magic-context/auto-search-runner.d.ts +1 -1
  66. package/dist/hooks/magic-context/auto-search-runner.d.ts.map +1 -1
  67. package/dist/hooks/magic-context/caveman-cleanup.d.ts.map +1 -1
  68. package/dist/hooks/magic-context/channel2-cycle.d.ts +2 -0
  69. package/dist/hooks/magic-context/channel2-cycle.d.ts.map +1 -1
  70. package/dist/hooks/magic-context/compaction-marker-manager.d.ts.map +1 -1
  71. package/dist/hooks/magic-context/compartment-render-epoch.d.ts +8 -0
  72. package/dist/hooks/magic-context/compartment-render-epoch.d.ts.map +1 -1
  73. package/dist/hooks/magic-context/compartment-runner-partial-recomp.d.ts.map +1 -1
  74. package/dist/hooks/magic-context/compartment-runner-recomp.d.ts.map +1 -1
  75. package/dist/hooks/magic-context/compartment-runner-types.d.ts +3 -5
  76. package/dist/hooks/magic-context/compartment-runner-types.d.ts.map +1 -1
  77. package/dist/hooks/magic-context/compartment-runner.d.ts +2 -1
  78. package/dist/hooks/magic-context/compartment-runner.d.ts.map +1 -1
  79. package/dist/hooks/magic-context/compartment-trigger.d.ts +3 -1
  80. package/dist/hooks/magic-context/compartment-trigger.d.ts.map +1 -1
  81. package/dist/hooks/magic-context/ctx-reduce-availability.d.ts +12 -0
  82. package/dist/hooks/magic-context/ctx-reduce-availability.d.ts.map +1 -1
  83. package/dist/hooks/magic-context/decision-calibration.d.ts +3 -0
  84. package/dist/hooks/magic-context/decision-calibration.d.ts.map +1 -1
  85. package/dist/hooks/magic-context/emergency-drop.d.ts +2 -0
  86. package/dist/hooks/magic-context/emergency-drop.d.ts.map +1 -1
  87. package/dist/hooks/magic-context/emergency-fail-closed.d.ts +21 -1
  88. package/dist/hooks/magic-context/emergency-fail-closed.d.ts.map +1 -1
  89. package/dist/hooks/magic-context/final-wire-token-estimate.d.ts +32 -1
  90. package/dist/hooks/magic-context/final-wire-token-estimate.d.ts.map +1 -1
  91. package/dist/hooks/magic-context/heuristic-cleanup.d.ts +2 -0
  92. package/dist/hooks/magic-context/heuristic-cleanup.d.ts.map +1 -1
  93. package/dist/hooks/magic-context/historian-drain-gate.d.ts +11 -0
  94. package/dist/hooks/magic-context/historian-drain-gate.d.ts.map +1 -0
  95. package/dist/hooks/magic-context/inject-compartments.d.ts +10 -8
  96. package/dist/hooks/magic-context/inject-compartments.d.ts.map +1 -1
  97. package/dist/hooks/magic-context/latest-assistant-turn.d.ts +25 -0
  98. package/dist/hooks/magic-context/latest-assistant-turn.d.ts.map +1 -0
  99. package/dist/hooks/magic-context/lkg-measured-request.d.ts +69 -0
  100. package/dist/hooks/magic-context/lkg-measured-request.d.ts.map +1 -0
  101. package/dist/hooks/magic-context/lkg-replay-fit.d.ts +118 -0
  102. package/dist/hooks/magic-context/lkg-replay-fit.d.ts.map +1 -0
  103. package/dist/hooks/magic-context/lkg-replay.d.ts +2 -0
  104. package/dist/hooks/magic-context/lkg-replay.d.ts.map +1 -1
  105. package/dist/hooks/magic-context/protected-tail-boundary.d.ts.map +1 -1
  106. package/dist/hooks/magic-context/read-session-formatting.d.ts +3 -0
  107. package/dist/hooks/magic-context/read-session-formatting.d.ts.map +1 -1
  108. package/dist/hooks/magic-context/read-session-true-raw-tokens.d.ts.map +1 -1
  109. package/dist/hooks/magic-context/reasoning-budget-status.d.ts +15 -0
  110. package/dist/hooks/magic-context/reasoning-budget-status.d.ts.map +1 -0
  111. package/dist/hooks/magic-context/reasoning-budget.d.ts +40 -0
  112. package/dist/hooks/magic-context/reasoning-budget.d.ts.map +1 -0
  113. package/dist/hooks/magic-context/reasoning-removal.d.ts +6 -6
  114. package/dist/hooks/magic-context/reasoning-removal.d.ts.map +1 -1
  115. package/dist/hooks/magic-context/recomp-orchestrator.d.ts +2 -0
  116. package/dist/hooks/magic-context/recomp-orchestrator.d.ts.map +1 -1
  117. package/dist/hooks/magic-context/sentinel.d.ts +2 -0
  118. package/dist/hooks/magic-context/sentinel.d.ts.map +1 -1
  119. package/dist/hooks/magic-context/strip-content.d.ts +7 -3
  120. package/dist/hooks/magic-context/strip-content.d.ts.map +1 -1
  121. package/dist/hooks/magic-context/supersession-reclaim.d.ts +4 -0
  122. package/dist/hooks/magic-context/supersession-reclaim.d.ts.map +1 -1
  123. package/dist/hooks/magic-context/tag-messages.d.ts +13 -0
  124. package/dist/hooks/magic-context/tag-messages.d.ts.map +1 -1
  125. package/dist/hooks/magic-context/tail-hygiene-walk.d.ts +5 -0
  126. package/dist/hooks/magic-context/tail-hygiene-walk.d.ts.map +1 -1
  127. package/dist/hooks/magic-context/temporal-awareness.d.ts +6 -3
  128. package/dist/hooks/magic-context/temporal-awareness.d.ts.map +1 -1
  129. package/dist/hooks/magic-context/temporal-served-projection.d.ts +4 -0
  130. package/dist/hooks/magic-context/temporal-served-projection.d.ts.map +1 -0
  131. package/dist/hooks/magic-context/tool-reclaim.d.ts +2 -0
  132. package/dist/hooks/magic-context/tool-reclaim.d.ts.map +1 -1
  133. package/dist/hooks/magic-context/transform-compartment-phase.d.ts +3 -28
  134. package/dist/hooks/magic-context/transform-compartment-phase.d.ts.map +1 -1
  135. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts +34 -12
  136. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts.map +1 -1
  137. package/dist/hooks/magic-context/transform.d.ts +11 -5
  138. package/dist/hooks/magic-context/transform.d.ts.map +1 -1
  139. package/dist/hooks/magic-context/wrapup-orchestrator.d.ts.map +1 -1
  140. package/dist/{index-fg34g6a5.js → index-1j34a56j.js} +49 -8
  141. package/dist/index-33gprt9g.js +30 -0
  142. package/dist/{index-zx63j2e2.js → index-5cep2r9n.js} +3 -2
  143. package/dist/{index-5pg0acf7.js → index-amycb7b1.js} +1 -1
  144. package/dist/{index-wgt4gamw.js → index-dr0gepzw.js} +507 -53
  145. package/dist/{index-1vs6anwz.js → index-n0vnzz6h.js} +2 -1
  146. package/dist/{index-977gxfz0.js → index-ramz5kkm.js} +1 -1
  147. package/dist/{index-by6h2pav.js → index-wtb9hzk6.js} +499 -284
  148. package/dist/{index-3wagyrnj.js → index-x37vg474.js} +5 -1
  149. package/dist/{index-me3zcj5t.js → index-z2g20msd.js} +4 -8
  150. package/dist/index.js +1 -1
  151. package/dist/{message-time-backfill-5ewk0axe.js → message-time-backfill-phrwp2fz.js} +2 -2
  152. package/dist/{model-resolution-5haaxnpt.js → model-resolution-wazv26n0.js} +1 -1
  153. package/dist/plugin/rpc-handlers.d.ts +4 -0
  154. package/dist/plugin/rpc-handlers.d.ts.map +1 -1
  155. package/dist/{read-session-chunk-apjwrttc.js → read-session-chunk-82rkqa8j.js} +4 -4
  156. package/dist/{recomp-orchestrator-gyeevxaw.js → recomp-orchestrator-vc5dkzy2.js} +9 -9
  157. package/dist/{send-session-notification-y29y9fsr.js → send-session-notification-rnc4nrsr.js} +3 -3
  158. package/dist/shared/auto-search-lifecycle.d.ts +7 -0
  159. package/dist/shared/auto-search-lifecycle.d.ts.map +1 -0
  160. package/dist/shared/cache-ttl-display.d.ts +6 -4
  161. package/dist/shared/cache-ttl-display.d.ts.map +1 -1
  162. package/dist/shared/harness.d.ts +1 -1
  163. package/dist/shared/harness.d.ts.map +1 -1
  164. package/dist/shared/historian-tool-expansions.d.ts +1 -1
  165. package/dist/shared/historian-tool-expansions.d.ts.map +1 -1
  166. package/dist/shared/historian-tool-template.d.ts +2 -2
  167. package/dist/shared/historian-tool-template.d.ts.map +1 -1
  168. package/dist/shared/model-cache-ttl.d.ts +1 -1
  169. package/dist/shared/model-cache-ttl.d.ts.map +1 -1
  170. package/dist/shared/model-resolution.d.ts +6 -3
  171. package/dist/shared/model-resolution.d.ts.map +1 -1
  172. package/dist/shared/model-suggestion-retry.d.ts +2 -0
  173. package/dist/shared/model-suggestion-retry.d.ts.map +1 -1
  174. package/dist/shared/protected-tools-policy.d.ts +6 -0
  175. package/dist/shared/protected-tools-policy.d.ts.map +1 -0
  176. package/dist/shared/provider-output-failure.d.ts +19 -0
  177. package/dist/shared/provider-output-failure.d.ts.map +1 -0
  178. package/dist/shared/sqlite.d.ts +14 -1
  179. package/dist/shared/sqlite.d.ts.map +1 -1
  180. package/dist/shared/temporal-upgrade-fixture.d.ts +19 -0
  181. package/dist/shared/temporal-upgrade-fixture.d.ts.map +1 -0
  182. package/dist/shared/window-geometry.d.ts +4 -0
  183. package/dist/shared/window-geometry.d.ts.map +1 -1
  184. package/dist/shared/write-transaction-timing.d.ts +8 -1
  185. package/dist/shared/write-transaction-timing.d.ts.map +1 -1
  186. package/dist/tools/ctx-expand/render.d.ts.map +1 -1
  187. package/dist/tools/ctx-reduce/tools.d.ts +2 -0
  188. package/dist/tools/ctx-reduce/tools.d.ts.map +1 -1
  189. package/dist/v2/fold/host-media.d.ts +4 -0
  190. package/dist/v2/fold/host-media.d.ts.map +1 -1
  191. package/dist/v2/fold/memory-cache.d.ts +70 -0
  192. package/dist/v2/fold/memory-cache.d.ts.map +1 -0
  193. package/dist/v2/fold/native-codec.d.ts +10 -0
  194. package/dist/v2/fold/native-codec.d.ts.map +1 -0
  195. package/dist/v2/fold/native-replay.d.ts +58 -0
  196. package/dist/v2/fold/native-replay.d.ts.map +1 -0
  197. package/dist/v2/fold/policy.d.ts +24 -0
  198. package/dist/v2/fold/policy.d.ts.map +1 -0
  199. package/dist/v2/hidden-child-native.d.ts +7 -0
  200. package/dist/v2/hidden-child-native.d.ts.map +1 -1
  201. package/dist/v2/hidden-child-record.d.ts +19 -0
  202. package/dist/v2/hidden-child-record.d.ts.map +1 -1
  203. package/dist/v2/hidden-completion.d.ts.map +1 -1
  204. package/dist/v2/hooks/context.d.ts.map +1 -1
  205. package/dist/v2/hooks/hidden-child.d.ts +46 -2
  206. package/dist/v2/hooks/hidden-child.d.ts.map +1 -1
  207. package/dist/v2/hooks/payload.d.ts.map +1 -1
  208. package/dist/v2/hooks/store.d.ts.map +1 -1
  209. package/dist/v2/hooks/tools.d.ts.map +1 -1
  210. package/dist/v2/hooks/types.d.ts +14 -0
  211. package/dist/v2/hooks/types.d.ts.map +1 -1
  212. package/dist/v2/server.js +13226 -11340
  213. package/dist/v2/store-reader.d.ts +16 -0
  214. package/dist/v2/store-reader.d.ts.map +1 -1
  215. package/dist/v2/tool-result.d.ts +8 -0
  216. package/dist/v2/tool-result.d.ts.map +1 -0
  217. package/dist/web/api.d.ts +6 -0
  218. package/dist/web/api.d.ts.map +1 -1
  219. package/dist/web/context-store.d.ts +13 -0
  220. package/dist/web/context-store.d.ts.map +1 -1
  221. package/dist/web/display-path.d.ts +28 -0
  222. package/dist/web/display-path.d.ts.map +1 -0
  223. package/dist/web/entry-args.d.ts +33 -0
  224. package/dist/web/entry-args.d.ts.map +1 -0
  225. package/dist/web/fixtures.d.ts +41 -0
  226. package/dist/web/fixtures.d.ts.map +1 -1
  227. package/dist/web/host-opencode.d.ts +9 -0
  228. package/dist/web/host-opencode.d.ts.map +1 -1
  229. package/dist/web/host-pi.d.ts +2 -0
  230. package/dist/web/host-pi.d.ts.map +1 -1
  231. package/dist/web/main.d.ts +4 -6
  232. package/dist/web/main.d.ts.map +1 -1
  233. package/dist/web/main.js +1477 -130
  234. package/dist/web/memories.d.ts +18 -2
  235. package/dist/web/memories.d.ts.map +1 -1
  236. package/dist/web/message-stats.d.ts +45 -0
  237. package/dist/web/message-stats.d.ts.map +1 -0
  238. package/dist/web/ui/index.html +1 -0
  239. package/dist/web/ui/panel.css +7 -0
  240. package/dist/web/ui/panel.js +332 -124
  241. package/dist/web/views.d.ts +73 -9
  242. package/dist/web/views.d.ts.map +1 -1
  243. package/dist/{wrapup-orchestrator-z9sqpqjf.js → wrapup-orchestrator-x9xamts2.js} +10 -9
  244. package/package.json +7 -2
  245. package/src/config/index.test.ts +257 -126
  246. package/src/config/index.ts +45 -39
  247. package/src/config/legacy-harness-blocks.test.ts +78 -0
  248. package/src/config/legacy-harness-blocks.ts +71 -0
  249. package/src/config/live-run-config.test.ts +49 -5
  250. package/src/config/live-run-config.ts +29 -0
  251. package/src/config/live-snapshot.ts +5 -1
  252. package/src/config/profiles.ts +1 -1
  253. package/src/config/project-config-trust-boundary.test.ts +2 -2
  254. package/src/config/project-security.hostile-matrix.test.ts +51 -65
  255. package/src/config/project-security.test.ts +6 -1
  256. package/src/config/project-security.ts +13 -12
  257. package/src/config/protected-tokens.test.ts +1 -1
  258. package/src/config/raw-loader.test.ts +29 -352
  259. package/src/config/raw-loader.ts +17 -406
  260. package/src/config/removed-config-keys.test.ts +1 -1
  261. package/src/config/schema/magic-context.test.ts +60 -64
  262. package/src/config/schema/magic-context.ts +105 -137
  263. package/src/config/variable.ts +21 -12
  264. package/src/shared/auto-search-lifecycle.ts +27 -0
  265. package/src/shared/cache-ttl-display.test.ts +1 -1
  266. package/src/shared/cache-ttl-display.ts +17 -16
  267. package/src/shared/harness.ts +1 -1
  268. package/src/shared/historian-tool-defaults.json +6 -6
  269. package/src/shared/historian-tool-expansions.ts +65 -8
  270. package/src/shared/historian-tool-preview-defaults.json +13 -0
  271. package/src/shared/historian-tool-template.ts +48 -14
  272. package/src/shared/model-cache-ttl.test.ts +2 -2
  273. package/src/shared/model-cache-ttl.ts +8 -4
  274. package/src/shared/model-resolution.test.ts +22 -32
  275. package/src/shared/model-resolution.ts +14 -19
  276. package/src/shared/model-suggestion-retry.ts +63 -7
  277. package/src/shared/protected-tools-policy.ts +25 -0
  278. package/src/shared/provider-output-failure.ts +176 -0
  279. package/src/shared/sqlite-acquisition-routing.test.ts +18 -0
  280. package/src/shared/sqlite.ts +100 -15
  281. package/src/shared/status-detail-text.test.ts +1 -1
  282. package/src/shared/status-view.test.ts +1 -1
  283. package/src/shared/temporal-upgrade-fixture.ts +50 -0
  284. package/src/shared/window-geometry.ts +10 -0
  285. package/src/shared/write-transaction-attribution.test.ts +2 -2
  286. package/src/shared/write-transaction-timing.ts +25 -1
  287. package/dist/features/magic-context/window-report-ledger.d.ts +0 -70
  288. package/dist/features/magic-context/window-report-ledger.d.ts.map +0 -1
  289. package/dist/index-e1q8002h.js +0 -16
  290. package/src/config/misplaced-agent-model.test.ts +0 -55
@@ -70,6 +70,8 @@ function installTransactionRouting(db, readonly) {
70
70
  configurable: true,
71
71
  writable: true,
72
72
  value: (sql) => {
73
+ if (/^\s*(?:COMMIT|END)\b/i.test(sql))
74
+ assertTransformWrite();
73
75
  if (/^\s*BEGIN\s+(?:IMMEDIATE|EXCLUSIVE)(?:\s+TRANSACTION)?\s*;?\s*$/i.test(sql)) {
74
76
  openWriterTransactions.delete(db);
75
77
  if (transformPassScope.getStore()?.active || backgroundWriterScope.getStore())
@@ -287,6 +289,15 @@ function getSqliteMemoryStats() {
287
289
  }
288
290
  var statementOwners = new WeakMap;
289
291
  var FIRST_PRUNE_AT = 256;
292
+ function closeReleasingStatements(close, args) {
293
+ if (args[0] === true)
294
+ return close(true);
295
+ try {
296
+ return close(true);
297
+ } catch {
298
+ return close(...args);
299
+ }
300
+ }
290
301
  function ownPreparedStatement(db, statement) {
291
302
  const finalizable = statement;
292
303
  if (typeof finalizable.finalize !== "function")
@@ -310,7 +321,7 @@ function ownPreparedStatement(db, statement) {
310
321
  }
311
322
  }
312
323
  references.clear();
313
- const result = close(...args);
324
+ const result = closeReleasingStatements(close, args);
314
325
  if (failure)
315
326
  throw failure;
316
327
  return result;
@@ -364,6 +375,10 @@ function withSqliteTransformPass(operation) {
364
375
  function withoutSqliteTransformPass(operation) {
365
376
  return transformPassScope.run(undefined, operation);
366
377
  }
378
+ function assertTransformWrite() {
379
+ if (!backgroundWriterScope.getStore())
380
+ transformPassScope.getStore()?.guard?.assert();
381
+ }
367
382
  function isTransientSqliteError(error) {
368
383
  if (!error || typeof error !== "object")
369
384
  return false;
@@ -392,6 +407,7 @@ function foregroundWaitLease() {
392
407
  return lease?.active && !admissionScope.getStore() && !backgroundWriterScope.getStore() ? lease : undefined;
393
408
  }
394
409
  function withAutocommitTimeout(db, operation) {
410
+ assertTransformWrite();
395
411
  const lease = foregroundWaitLease();
396
412
  if (isInTransaction(db) || !lease && !backgroundWriterScope.getStore())
397
413
  return operation();
@@ -412,6 +428,7 @@ function withAutocommitTimeout(db, operation) {
412
428
  }
413
429
  }
414
430
  function acquireShort(db, acquire, site) {
431
+ assertTransformWrite();
415
432
  const started = performance.now();
416
433
  const previous = pragmaNumber(db, "busy_timeout");
417
434
  const outer = writerAcquisitionScope.getStore();
@@ -423,7 +440,7 @@ function acquireShort(db, acquire, site) {
423
440
  let acquiredAt;
424
441
  try {
425
442
  const lease = foregroundWaitLease();
426
- const timeout = lease ? Math.floor(lease.remainingWaitMs) : SHORT_BUSY_TIMEOUT_MS;
443
+ const timeout = Math.floor(Math.min(lease ? lease.remainingWaitMs : SHORT_BUSY_TIMEOUT_MS, owner?.remainingMs?.() ?? lease?.guard?.remainingMs() ?? Infinity));
427
444
  db.exec(`PRAGMA busy_timeout=${timeout}`);
428
445
  acquire();
429
446
  acquiredAt = performance.now();
@@ -496,29 +513,53 @@ async function beginSqliteWriterAsync(db, site) {
496
513
  }
497
514
  }
498
515
  }
499
- async function withAsyncPrivilegedWriter(db, operation) {
516
+ async function withAsyncPrivilegedWriter(db, operation, options = {}) {
500
517
  const started = performance.now();
518
+ const budgetMs = Math.max(0, Math.min(FOREGROUND_ACQUISITION_BUDGET_MS, options.budgetMs ?? Infinity));
501
519
  let attempts = 0;
502
520
  for (;; ) {
521
+ options.signal?.throwIfAborted();
522
+ options.assertCurrentPass?.();
503
523
  attempts++;
524
+ let entered = false;
504
525
  try {
505
526
  const acquisition = {
506
527
  site: "privileged_writer",
507
528
  lane: "foreground",
508
529
  startedAt: started,
509
530
  attempts,
510
- claimed: false
531
+ claimed: false,
532
+ remainingMs: () => Math.max(0, budgetMs - (performance.now() - started))
511
533
  };
512
- return admissionScope.run(true, () => withSqliteTransformPass(() => writerAcquisitionScope.run(acquisition, () => withPrivilegedWriter(db, operation))));
534
+ return admissionScope.run(true, () => withSqliteTransformPass(() => writerAcquisitionScope.run(acquisition, () => withPrivilegedWriter(db, () => {
535
+ entered = true;
536
+ return operation();
537
+ }))));
513
538
  } catch (error) {
514
- if (!(error instanceof SqliteAcquisitionBusyError))
539
+ if (entered || !(error instanceof SqliteAcquisitionBusyError))
515
540
  throw error;
541
+ options.beforeRetry?.(error);
516
542
  const elapsed = performance.now() - started;
517
- if (elapsed >= FOREGROUND_ACQUISITION_BUDGET_MS) {
543
+ if (elapsed >= budgetMs) {
518
544
  reportSqliteDiagnostic(`sqlite writer site=privileged_writer lane=foreground acquire_ms=${Math.round(elapsed)} attempts=${attempts} outcome=busy`);
519
545
  throw error;
520
546
  }
521
- await new Promise((resolve) => setTimeout(resolve, Math.min(attempts === 1 ? 500 : 1000, FOREGROUND_ACQUISITION_BUDGET_MS - elapsed)));
547
+ const backoff = attempts === 1 ? 500 : 1000;
548
+ const delay = Math.min(options.jitter ? backoff * (0.8 + Math.random() * 0.4) : backoff, budgetMs - elapsed);
549
+ await new Promise((resolve, reject) => {
550
+ const abort = () => {
551
+ clearTimeout(timer);
552
+ options.signal?.removeEventListener("abort", abort);
553
+ reject(options.signal?.reason ?? new Error("Writer wait aborted"));
554
+ };
555
+ const timer = setTimeout(() => {
556
+ options.signal?.removeEventListener("abort", abort);
557
+ resolve();
558
+ }, delay);
559
+ options.signal?.addEventListener("abort", abort, { once: true });
560
+ if (options.signal?.aborted)
561
+ abort();
562
+ });
522
563
  }
523
564
  }
524
565
  }
@@ -0,0 +1,30 @@
1
+ import {
2
+ log
3
+ } from "./index-qbkzdkk0.js";
4
+
5
+ // src/shared/write-transaction-timing.ts
6
+ var SLOW_WRITE_TRANSACTION_THRESHOLD_MS = 1000;
7
+ function logSlowWriteTransaction(site, startedAt, thresholdMs = SLOW_WRITE_TRANSACTION_THRESHOLD_MS, completedAtMs = performance.now(), steps) {
8
+ try {
9
+ const durationMs = completedAtMs - startedAt;
10
+ if (durationMs < thresholdMs)
11
+ return;
12
+ const detail = steps ? Object.entries(steps).map(([name, ms]) => `${name}=${ms.toFixed(1)}ms`).join(" ") : "";
13
+ log(`[magic-context] slow write transaction: site=${site} held=${durationMs.toFixed(1)}ms${detail ? ` ${detail}` : ""}`);
14
+ } catch {}
15
+ }
16
+
17
+ class WriteTransactionSteps {
18
+ durations = {};
19
+ last = performance.now();
20
+ mark(name) {
21
+ const now = performance.now();
22
+ this.durations[name] = now - this.last;
23
+ this.last = now;
24
+ }
25
+ reset() {
26
+ this.last = performance.now();
27
+ }
28
+ }
29
+
30
+ export { logSlowWriteTransaction, WriteTransactionSteps };
@@ -9,7 +9,7 @@ import {
9
9
  modelRefLookupOrder,
10
10
  localBudget,
11
11
  calibrationForModelKey
12
- } from "./index-3wagyrnj.js";
12
+ } from "./index-x37vg474.js";
13
13
 
14
14
  // src/shared/models-dev-cache.ts
15
15
  import { readFileSync as readFileSync2 } from "node:fs";
@@ -547,7 +547,8 @@ function applyProvenInputFloor(geometry, provenInputTokens) {
547
547
  ...geometry.derivation,
548
548
  window,
549
549
  reserve: Math.max(0, window - provenInputTokens),
550
- absoluteWall: trustedAbsoluteWall ? geometry.derivation.absoluteWall : Math.max(geometry.derivation.absoluteWall, provenInputTokens)
550
+ absoluteWall: trustedAbsoluteWall ? geometry.derivation.absoluteWall : Math.max(geometry.derivation.absoluteWall, provenInputTokens),
551
+ provenInputTokens
551
552
  }
552
553
  }
553
554
  };
@@ -3,7 +3,7 @@ import {
3
3
  } from "./index-qbkzdkk0.js";
4
4
  import {
5
5
  shouldHoldIgnoredNotification
6
- } from "./index-977gxfz0.js";
6
+ } from "./index-ramz5kkm.js";
7
7
 
8
8
  // src/shared/error-message.ts
9
9
  function getErrorMessage(error) {