@retaw106/mmc-oc 2.3.0 → 2.5.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 (216) hide show
  1. package/dist/cli.js +12 -1
  2. package/dist/config/schema/magic-context.d.ts +33 -0
  3. package/dist/config/schema/magic-context.d.ts.map +1 -1
  4. package/dist/config-init.js +12 -1
  5. package/dist/{context-wt7g4f8k.js → context-xx09sh1g.js} +1985 -603
  6. package/dist/features/magic-context/memory-maintainer/launcher.d.ts +13 -4
  7. package/dist/features/magic-context/memory-maintainer/launcher.d.ts.map +1 -1
  8. package/dist/features/magic-context/memory-maintainer/manual-commands.d.ts.map +1 -1
  9. package/dist/features/magic-context/memory-maintainer/model-chain.d.ts +47 -0
  10. package/dist/features/magic-context/memory-maintainer/model-chain.d.ts.map +1 -0
  11. package/dist/features/magic-context/memory-maintainer/oc2-adapter.d.ts +17 -4
  12. package/dist/features/magic-context/memory-maintainer/oc2-adapter.d.ts.map +1 -1
  13. package/dist/features/magic-context/memory-maintainer/pipeline.d.ts +6 -0
  14. package/dist/features/magic-context/memory-maintainer/pipeline.d.ts.map +1 -1
  15. package/dist/features/magic-context/message-index-async.d.ts +6 -2
  16. package/dist/features/magic-context/message-index-async.d.ts.map +1 -1
  17. package/dist/features/magic-context/message-index.d.ts +5 -8
  18. package/dist/features/magic-context/message-index.d.ts.map +1 -1
  19. package/dist/features/magic-context/search.d.ts +5 -1
  20. package/dist/features/magic-context/search.d.ts.map +1 -1
  21. package/dist/features/magic-context/storage-db.d.ts +2 -0
  22. package/dist/features/magic-context/storage-db.d.ts.map +1 -1
  23. package/dist/features/magic-context/storage-host-instruction-retention.d.ts +4 -0
  24. package/dist/features/magic-context/storage-host-instruction-retention.d.ts.map +1 -0
  25. package/dist/features/magic-context/storage-meta-session.d.ts.map +1 -1
  26. package/dist/features/magic-context/storage-meta-shared.d.ts +2 -2
  27. package/dist/features/magic-context/storage-meta-shared.d.ts.map +1 -1
  28. package/dist/features/magic-context/storage-session-tables.d.ts +9 -1
  29. package/dist/features/magic-context/storage-session-tables.d.ts.map +1 -1
  30. package/dist/features/magic-context/storage-tags.d.ts +4 -0
  31. package/dist/features/magic-context/storage-tags.d.ts.map +1 -1
  32. package/dist/features/magic-context/transform-decision-log.d.ts +57 -2
  33. package/dist/features/magic-context/transform-decision-log.d.ts.map +1 -1
  34. package/dist/hooks/magic-context/__fixtures__/tail-hygiene-refresh.d.ts +34 -0
  35. package/dist/hooks/magic-context/__fixtures__/tail-hygiene-refresh.d.ts.map +1 -0
  36. package/dist/hooks/magic-context/apply-operations.d.ts +3 -1
  37. package/dist/hooks/magic-context/apply-operations.d.ts.map +1 -1
  38. package/dist/hooks/magic-context/auto-search-hint.d.ts +3 -0
  39. package/dist/hooks/magic-context/auto-search-hint.d.ts.map +1 -1
  40. package/dist/hooks/magic-context/auto-search-runner.d.ts.map +1 -1
  41. package/dist/hooks/magic-context/channel2-delivery.d.ts.map +1 -1
  42. package/dist/hooks/magic-context/compartment-runner-historian.d.ts +2 -2
  43. package/dist/hooks/magic-context/compartment-runner-types.d.ts +2 -2
  44. package/dist/hooks/magic-context/compartment-runner-types.d.ts.map +1 -1
  45. package/dist/hooks/magic-context/compartment-runner-validation.d.ts.map +1 -1
  46. package/dist/hooks/magic-context/compartment-runner.d.ts +4 -0
  47. package/dist/hooks/magic-context/compartment-runner.d.ts.map +1 -1
  48. package/dist/hooks/magic-context/compartment-trigger-error.d.ts +11 -0
  49. package/dist/hooks/magic-context/compartment-trigger-error.d.ts.map +1 -0
  50. package/dist/hooks/magic-context/compartment-trigger.d.ts +1 -1
  51. package/dist/hooks/magic-context/compartment-trigger.d.ts.map +1 -1
  52. package/dist/hooks/magic-context/ctx-reduce-nudge.d.ts +1 -0
  53. package/dist/hooks/magic-context/ctx-reduce-nudge.d.ts.map +1 -1
  54. package/dist/hooks/magic-context/degraded-pass-refusal.d.ts +2 -0
  55. package/dist/hooks/magic-context/degraded-pass-refusal.d.ts.map +1 -1
  56. package/dist/hooks/magic-context/diagnostic-log-state.d.ts +4 -0
  57. package/dist/hooks/magic-context/diagnostic-log-state.d.ts.map +1 -0
  58. package/dist/hooks/magic-context/edit-marker.d.ts +2 -0
  59. package/dist/hooks/magic-context/edit-marker.d.ts.map +1 -1
  60. package/dist/hooks/magic-context/emergency-drop.d.ts.map +1 -1
  61. package/dist/hooks/magic-context/file-token-coverage.d.ts +11 -0
  62. package/dist/hooks/magic-context/file-token-coverage.d.ts.map +1 -0
  63. package/dist/hooks/magic-context/final-wire-token-estimate.d.ts +2 -0
  64. package/dist/hooks/magic-context/final-wire-token-estimate.d.ts.map +1 -1
  65. package/dist/hooks/magic-context/hook-handlers.d.ts.map +1 -1
  66. package/dist/hooks/magic-context/host-served-rows.d.ts +10 -0
  67. package/dist/hooks/magic-context/host-served-rows.d.ts.map +1 -1
  68. package/dist/hooks/magic-context/inject-compartments.d.ts +1 -1
  69. package/dist/hooks/magic-context/inject-compartments.d.ts.map +1 -1
  70. package/dist/hooks/magic-context/lkg-recovery-fence.d.ts.map +1 -1
  71. package/dist/hooks/magic-context/lkg-replay.d.ts.map +1 -1
  72. package/dist/hooks/magic-context/lkg-slot.d.ts +1 -1
  73. package/dist/hooks/magic-context/lkg-slot.d.ts.map +1 -1
  74. package/dist/hooks/magic-context/nudge-evaluation-log.d.ts +3 -0
  75. package/dist/hooks/magic-context/nudge-evaluation-log.d.ts.map +1 -0
  76. package/dist/hooks/magic-context/pass-outcome.d.ts +2 -0
  77. package/dist/hooks/magic-context/pass-outcome.d.ts.map +1 -1
  78. package/dist/hooks/magic-context/pending-drop-eligibility.d.ts +14 -0
  79. package/dist/hooks/magic-context/pending-drop-eligibility.d.ts.map +1 -0
  80. package/dist/hooks/magic-context/pending-materialization.d.ts +2 -0
  81. package/dist/hooks/magic-context/pending-materialization.d.ts.map +1 -1
  82. package/dist/hooks/magic-context/protected-tail-boundary.d.ts +2 -0
  83. package/dist/hooks/magic-context/protected-tail-boundary.d.ts.map +1 -1
  84. package/dist/hooks/magic-context/provider-visible-parts.d.ts +10 -4
  85. package/dist/hooks/magic-context/provider-visible-parts.d.ts.map +1 -1
  86. package/dist/hooks/magic-context/read-session-chunk.d.ts.map +1 -1
  87. package/dist/hooks/magic-context/recomp-orchestrator.d.ts +3 -3
  88. package/dist/hooks/magic-context/recomp-orchestrator.d.ts.map +1 -1
  89. package/dist/hooks/magic-context/render-options.d.ts +19 -0
  90. package/dist/hooks/magic-context/render-options.d.ts.map +1 -0
  91. package/dist/hooks/magic-context/supersession-reclaim.d.ts +5 -3
  92. package/dist/hooks/magic-context/supersession-reclaim.d.ts.map +1 -1
  93. package/dist/hooks/magic-context/system-date-refresh.d.ts +3 -2
  94. package/dist/hooks/magic-context/system-date-refresh.d.ts.map +1 -1
  95. package/dist/hooks/magic-context/system-prompt-hash.d.ts.map +1 -1
  96. package/dist/hooks/magic-context/system-prompt-sticky-date.d.ts +4 -0
  97. package/dist/hooks/magic-context/system-prompt-sticky-date.d.ts.map +1 -0
  98. package/dist/hooks/magic-context/tag-content-primitives.d.ts +1 -1
  99. package/dist/hooks/magic-context/tag-content-primitives.d.ts.map +1 -1
  100. package/dist/hooks/magic-context/tag-messages.d.ts +15 -2
  101. package/dist/hooks/magic-context/tag-messages.d.ts.map +1 -1
  102. package/dist/hooks/magic-context/tail-hygiene-output-count.d.ts +18 -0
  103. package/dist/hooks/magic-context/tail-hygiene-output-count.d.ts.map +1 -0
  104. package/dist/hooks/magic-context/tail-hygiene-walk.d.ts +8 -4
  105. package/dist/hooks/magic-context/tail-hygiene-walk.d.ts.map +1 -1
  106. package/dist/hooks/magic-context/text-complete.d.ts +1 -1
  107. package/dist/hooks/magic-context/text-complete.d.ts.map +1 -1
  108. package/dist/hooks/magic-context/todo-view.d.ts +2 -2
  109. package/dist/hooks/magic-context/tool-drop-target.d.ts +3 -2
  110. package/dist/hooks/magic-context/tool-drop-target.d.ts.map +1 -1
  111. package/dist/hooks/magic-context/tool-reclaim.d.ts +5 -2
  112. package/dist/hooks/magic-context/tool-reclaim.d.ts.map +1 -1
  113. package/dist/hooks/magic-context/transform-compartment-phase.d.ts +1 -0
  114. package/dist/hooks/magic-context/transform-compartment-phase.d.ts.map +1 -1
  115. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts +8 -0
  116. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts.map +1 -1
  117. package/dist/hooks/magic-context/transform-stage-logger.d.ts +3 -0
  118. package/dist/hooks/magic-context/transform-stage-logger.d.ts.map +1 -1
  119. package/dist/hooks/magic-context/transform.d.ts +4 -9
  120. package/dist/hooks/magic-context/transform.d.ts.map +1 -1
  121. package/dist/hooks/magic-context/unresolved-history-boundary.d.ts +5 -1
  122. package/dist/hooks/magic-context/unresolved-history-boundary.d.ts.map +1 -1
  123. package/dist/{index-kw21z5pe.js → index-0d40b4q8.js} +17119 -16569
  124. package/dist/{index-z2w1eq3y.js → index-1vxffj5j.js} +558 -211
  125. package/dist/{index-z2g20msd.js → index-azbmnekv.js} +4 -4
  126. package/dist/{index-18yrysyj.js → index-bpjjcdy9.js} +1 -1
  127. package/dist/{index-a5mw0xp3.js → index-k25thxq7.js} +1 -1
  128. package/dist/{index-3gj1ak4c.js → index-mjf0p7yq.js} +1 -1
  129. package/dist/{index-czba8tw3.js → index-pte3cfs9.js} +226 -14
  130. package/dist/index.js +2 -2
  131. package/dist/{message-time-backfill-sykevdax.js → message-time-backfill-g9py24yt.js} +1 -1
  132. package/dist/model-resolution-cvyrrcjw.js +8 -0
  133. package/dist/plugin/rpc-handlers.d.ts.map +1 -1
  134. package/dist/plugin/subagent-tool-policy.d.ts +4 -0
  135. package/dist/plugin/subagent-tool-policy.d.ts.map +1 -1
  136. package/dist/{read-session-chunk-863d6c06.js → read-session-chunk-eb3fy45y.js} +3 -3
  137. package/dist/{recomp-orchestrator-wrjy3qym.js → recomp-orchestrator-mmpy5cb7.js} +6 -6
  138. package/dist/{send-session-notification-cz6ev088.js → send-session-notification-zpqs213d.js} +3 -3
  139. package/dist/shared/model-suggestion-retry.d.ts +23 -0
  140. package/dist/shared/model-suggestion-retry.d.ts.map +1 -1
  141. package/dist/shared/prompt-surface-runtime.d.ts +5 -0
  142. package/dist/shared/prompt-surface-runtime.d.ts.map +1 -1
  143. package/dist/shared/reclaim-distance.d.ts +33 -0
  144. package/dist/shared/reclaim-distance.d.ts.map +1 -0
  145. package/dist/shared/rpc-discovery-cleanup.d.ts +3 -0
  146. package/dist/shared/rpc-discovery-cleanup.d.ts.map +1 -0
  147. package/dist/shared/rpc-server.d.ts +2 -0
  148. package/dist/shared/rpc-server.d.ts.map +1 -1
  149. package/dist/shared/search-text.d.ts +8 -0
  150. package/dist/shared/search-text.d.ts.map +1 -0
  151. package/dist/shared/sqlite.d.ts +8 -1
  152. package/dist/shared/sqlite.d.ts.map +1 -1
  153. package/dist/shared/stable-json.d.ts +7 -0
  154. package/dist/shared/stable-json.d.ts.map +1 -1
  155. package/dist/shared/storage-file-mutex.d.ts.map +1 -1
  156. package/dist/shared/system-directive.d.ts +2 -0
  157. package/dist/shared/system-directive.d.ts.map +1 -1
  158. package/dist/shared/tail-hygiene-json.d.ts +22 -0
  159. package/dist/shared/tail-hygiene-json.d.ts.map +1 -0
  160. package/dist/shared/user-facing-codes.d.ts +2 -2
  161. package/dist/v2/fold/native-replay.d.ts +11 -2
  162. package/dist/v2/fold/native-replay.d.ts.map +1 -1
  163. package/dist/v2/fold/policy.d.ts.map +1 -1
  164. package/dist/v2/fold/restore.d.ts.map +1 -1
  165. package/dist/v2/hidden-completion.d.ts +20 -1
  166. package/dist/v2/hidden-completion.d.ts.map +1 -1
  167. package/dist/v2/hooks/context.d.ts +1 -1
  168. package/dist/v2/hooks/context.d.ts.map +1 -1
  169. package/dist/v2/hooks/generate.d.ts +36 -1
  170. package/dist/v2/hooks/generate.d.ts.map +1 -1
  171. package/dist/v2/hooks/hidden-child.d.ts +22 -1
  172. package/dist/v2/hooks/hidden-child.d.ts.map +1 -1
  173. package/dist/v2/hooks/lkg-system.d.ts +35 -4
  174. package/dist/v2/hooks/lkg-system.d.ts.map +1 -1
  175. package/dist/v2/hooks/payload.d.ts +10 -1
  176. package/dist/v2/hooks/payload.d.ts.map +1 -1
  177. package/dist/v2/hooks/store.d.ts +2 -0
  178. package/dist/v2/hooks/store.d.ts.map +1 -1
  179. package/dist/v2/hooks/types.d.ts +12 -0
  180. package/dist/v2/hooks/types.d.ts.map +1 -1
  181. package/dist/v2/server.js +16272 -13742
  182. package/dist/v2/store-reader.d.ts +38 -1
  183. package/dist/v2/store-reader.d.ts.map +1 -1
  184. package/dist/web/main.js +262 -17
  185. package/dist/{wrapup-orchestrator-bmybc5p5.js → wrapup-orchestrator-jq589pgr.js} +6 -6
  186. package/package.json +1 -1
  187. package/src/config/latch-permanence-guard.test.ts +8 -0
  188. package/src/config/project-security.test.ts +17 -0
  189. package/src/config/schema/magic-context.test.ts +50 -0
  190. package/src/config/schema/magic-context.ts +34 -1
  191. package/src/shared/model-suggestion-retry.test.ts +52 -0
  192. package/src/shared/model-suggestion-retry.ts +13 -4
  193. package/src/shared/prompt-surface-runtime.ts +12 -0
  194. package/src/shared/reclaim-distance.test.ts +111 -0
  195. package/src/shared/reclaim-distance.ts +91 -0
  196. package/src/shared/root-async-context.probe.mjs +36 -0
  197. package/src/shared/root-async-context.test.ts +49 -0
  198. package/src/shared/rpc-discovery-cleanup.test.ts +125 -0
  199. package/src/shared/rpc-discovery-cleanup.ts +57 -0
  200. package/src/shared/rpc-server.ts +36 -13
  201. package/src/shared/search-text.test.ts +30 -0
  202. package/src/shared/search-text.ts +62 -0
  203. package/src/shared/sqlite-busy-budget-review.test.ts +291 -0
  204. package/src/shared/sqlite-foreground-wait.test.ts +237 -1
  205. package/src/shared/sqlite-turn-deadline.test.ts +286 -0
  206. package/src/shared/sqlite.ts +292 -23
  207. package/src/shared/stable-json.ts +56 -14
  208. package/src/shared/storage-file-mutex.test.ts +51 -2
  209. package/src/shared/storage-file-mutex.ts +11 -1
  210. package/src/shared/system-directive.test.ts +37 -0
  211. package/src/shared/system-directive.ts +19 -1
  212. package/src/shared/tag-transcript.ts +16 -4
  213. package/src/shared/tail-hygiene-json.test.ts +117 -0
  214. package/src/shared/tail-hygiene-json.ts +217 -0
  215. package/src/shared/user-facing-codes.ts +2 -2
  216. package/dist/model-resolution-wazv26n0.js +0 -6
@@ -8,7 +8,7 @@ function readString(value) {
8
8
  const trimmed = value.trim();
9
9
  return trimmed.length > 0 ? trimmed : undefined;
10
10
  }
11
- function normalizeModelEntry(entry, harness) {
11
+ function normalizeModelEntry2(entry, harness) {
12
12
  if (typeof entry === "string") {
13
13
  const model = readString(entry);
14
14
  return model ? { model } : undefined;
@@ -33,7 +33,7 @@ function resolveFallbackEntries(value, harness) {
33
33
  const values = Array.isArray(value) ? value : value === undefined ? [] : [value];
34
34
  const resolved = [];
35
35
  for (const value of values) {
36
- const entry = normalizeModelEntry(value, harness);
36
+ const entry = normalizeModelEntry2(value, harness);
37
37
  if (!entry || !isValidModelReference(entry))
38
38
  continue;
39
39
  if (resolved.some((candidate) => sameAttempt(candidate, entry)))
@@ -43,7 +43,7 @@ function resolveFallbackEntries(value, harness) {
43
43
  return resolved;
44
44
  }
45
45
  function resolvePrimaryEntry(args) {
46
- const entry = normalizeModelEntry(args.entry, args.harness);
46
+ const entry = normalizeModelEntry2(args.entry, args.harness);
47
47
  if (!entry)
48
48
  return;
49
49
  const qualifier = entry.qualifier ?? readString(args.defaultQualifier);
@@ -62,4 +62,4 @@ function resolveHistorianModel2(config, harness) {
62
62
  fallbacks: resolveFallbackEntries(historian.fallback_models, harness)
63
63
  };
64
64
  }
65
- export { resolveHistorianModel2 };
65
+ export { normalizeModelEntry2, resolveHistorianModel2 };
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  Database,
3
3
  getSqliteDatabasePath
4
- } from "./index-czba8tw3.js";
4
+ } from "./index-pte3cfs9.js";
5
5
  import {
6
6
  harnessOwnsOpenCodeStore,
7
7
  log
@@ -3,7 +3,7 @@ import {
3
3
  } from "./index-k59af64t.js";
4
4
  import {
5
5
  shouldHoldIgnoredNotification
6
- } from "./index-18yrysyj.js";
6
+ } from "./index-bpjjcdy9.js";
7
7
 
8
8
  // src/shared/error-message.ts
9
9
  function getErrorMessage(error) {
@@ -4,7 +4,7 @@ import {
4
4
  renderUserFacingFailure,
5
5
  userFacingFailureCode,
6
6
  executeContextRecomp
7
- } from "./index-kw21z5pe.js";
7
+ } from "./index-0d40b4q8.js";
8
8
  import {
9
9
  sessionLog
10
10
  } from "./index-k59af64t.js";
@@ -1,6 +1,10 @@
1
1
  // src/shared/sqlite.ts
2
- import { AsyncLocalStorage } from "node:async_hooks";
2
+ import { AsyncLocalStorage, AsyncResource } from "node:async_hooks";
3
3
  import { statSync } from "node:fs";
4
+ var resourceRoot = new AsyncResource("magic-context:root");
5
+ function inRootAsyncContext(operation) {
6
+ return resourceRoot.runInAsyncScope(operation);
7
+ }
4
8
  var reportSlowPrivilegedWrite;
5
9
  function registerSlowWriteReporter(reporter) {
6
10
  reportSlowPrivilegedWrite = reporter;
@@ -163,6 +167,177 @@ function topLevelCommaSegments(text) {
163
167
  function getTagIdentityWriteGeneration() {
164
168
  return tagIdentityWriteGeneration;
165
169
  }
170
+ var busyTimeoutStates = new WeakMap;
171
+ var BUSY_TIMEOUT_QUERY = /^\s*PRAGMA\s+(?:(?:\w+|"[^"]+"|`[^`]+`|\[[^\]]+\])\s*\.\s*)?(?:busy_timeout|"busy_timeout"|`busy_timeout`|\[busy_timeout\])\s*;?\s*$/i;
172
+ var BUSY_TIMEOUT_SETTER = /^\s*PRAGMA\s+(?:(?:\w+|"[^"]+"|`[^`]+`|\[[^\]]+\])\s*\.\s*)?(?:busy_timeout|"busy_timeout"|`busy_timeout`|\[busy_timeout\])\s*(?==|\()/i;
173
+ function literalBusyTimeout(sql) {
174
+ const head = BUSY_TIMEOUT_SETTER.exec(sql);
175
+ if (!head)
176
+ return;
177
+ const match = /^(?:=\s*|\(\s*)(?:'(-?\d+)'|"(-?\d+)"|(-?\d+))\s*\)?\s*;?\s*$/.exec(sql.slice(head[0].length));
178
+ if (!match)
179
+ return;
180
+ const value = Number(match[1] ?? match[2] ?? match[3]);
181
+ return value < 0 ? 0 : value <= 2147483647 ? value : undefined;
182
+ }
183
+ function busyTimeoutStatements(sql) {
184
+ const statements = [];
185
+ let statement = "";
186
+ let quote = "";
187
+ for (let i = 0;i < sql.length; i++) {
188
+ const char = sql[i];
189
+ if (quote) {
190
+ statement += char;
191
+ if (char === quote) {
192
+ if (sql[i + 1] === quote)
193
+ statement += sql[++i];
194
+ else
195
+ quote = "";
196
+ }
197
+ } else if (char === "'" || char === '"' || char === "`" || char === "[") {
198
+ quote = char === "[" ? "]" : char;
199
+ statement += char;
200
+ } else if (char === "-" && sql[i + 1] === "-") {
201
+ while (i + 1 < sql.length && sql[i + 1] !== `
202
+ `)
203
+ i++;
204
+ statement += " ";
205
+ } else if (char === "/" && sql[i + 1] === "*") {
206
+ i += 2;
207
+ while (i < sql.length && !(sql[i] === "*" && sql[i + 1] === "/"))
208
+ i++;
209
+ i++;
210
+ statement += " ";
211
+ } else if (char === ";") {
212
+ statements.push(statement);
213
+ statement = "";
214
+ } else
215
+ statement += char;
216
+ }
217
+ statements.push(statement);
218
+ return statements.filter((part) => part.trim().length > 0);
219
+ }
220
+ function installNativeDeadlineRouting(db) {
221
+ const rawExec = db.exec.bind(db);
222
+ const rawPrepare = db.prepare.bind(db);
223
+ const readTimeout = () => {
224
+ const statement = rawPrepare("PRAGMA busy_timeout");
225
+ try {
226
+ return Object.values(statement.get())[0];
227
+ } finally {
228
+ statement.finalize?.();
229
+ }
230
+ };
231
+ const timeoutState = { current: readTimeout() };
232
+ busyTimeoutStates.set(db, timeoutState);
233
+ const setBusyTimeout = (timeout) => {
234
+ rawExec(`PRAGMA busy_timeout=${timeout}`);
235
+ timeoutState.current = timeout;
236
+ };
237
+ const withinDeadline = (operation) => {
238
+ const deadline = nativeWaitScope?.getStore();
239
+ if (!deadline?.active || !deadline.remainingMs)
240
+ return operation();
241
+ const remaining = deadline.remainingMs();
242
+ if (remaining === Infinity)
243
+ return operation();
244
+ const previous = timeoutState.current;
245
+ const timeout = Math.min(previous, Math.max(0, Math.floor(remaining)));
246
+ if (timeout === previous)
247
+ return operation();
248
+ setBusyTimeout(timeout);
249
+ try {
250
+ return operation();
251
+ } finally {
252
+ setBusyTimeout(previous);
253
+ }
254
+ };
255
+ Object.defineProperty(db, "exec", {
256
+ configurable: true,
257
+ writable: true,
258
+ value: (sql) => {
259
+ const parts = /\bbusy_timeout\b/i.test(sql) ? busyTimeoutStatements(sql) : [];
260
+ if (parts.length === 1 && BUSY_TIMEOUT_QUERY.test(parts[0]))
261
+ return rawExec(sql);
262
+ const singleSetter = parts.length === 1 && BUSY_TIMEOUT_SETTER.test(parts[0]);
263
+ const setting = singleSetter ? literalBusyTimeout(parts[0]) : undefined;
264
+ if (singleSetter) {
265
+ const result = rawExec(sql);
266
+ timeoutState.current = setting ?? readTimeout();
267
+ return result;
268
+ }
269
+ if (!/\bbusy_timeout\b/i.test(sql))
270
+ return withinDeadline(() => rawExec(sql));
271
+ const setters = parts.filter((part) => BUSY_TIMEOUT_SETTER.test(part));
272
+ return withinDeadline(() => {
273
+ try {
274
+ const result = rawExec(sql);
275
+ if (setters.length)
276
+ timeoutState.current = literalBusyTimeout(setters[setters.length - 1]) ?? readTimeout();
277
+ return result;
278
+ } catch (error) {
279
+ if (setters.length)
280
+ timeoutState.current = readTimeout();
281
+ throw error;
282
+ }
283
+ });
284
+ }
285
+ });
286
+ const nativePrepare = (sql) => BUSY_TIMEOUT_QUERY.test(sql) || BUSY_TIMEOUT_SETTER.test(sql) ? rawPrepare(sql) : withinDeadline(() => rawPrepare(sql));
287
+ Object.defineProperty(db, "prepare", {
288
+ configurable: true,
289
+ writable: true,
290
+ value: (sql) => {
291
+ const statement = nativePrepare(sql);
292
+ const normalized = /\bbusy_timeout\b/i.test(sql) ? busyTimeoutStatements(sql)[0] ?? sql : sql;
293
+ const setting = literalBusyTimeout(normalized);
294
+ const timeoutSetter = BUSY_TIMEOUT_SETTER.test(normalized);
295
+ const timeoutQuery = BUSY_TIMEOUT_QUERY.test(normalized);
296
+ if (timeoutSetter)
297
+ timeoutState.current = setting ?? readTimeout();
298
+ for (const method of ["run", "get", "all", "values"]) {
299
+ const execute = statement[method]?.bind(statement);
300
+ if (!execute)
301
+ continue;
302
+ Object.defineProperty(statement, method, {
303
+ configurable: true,
304
+ value: (...args) => {
305
+ if (timeoutQuery)
306
+ return execute(...args);
307
+ if (!timeoutSetter)
308
+ return withinDeadline(() => execute(...args));
309
+ const result = execute(...args);
310
+ timeoutState.current = readTimeout();
311
+ return result;
312
+ }
313
+ });
314
+ }
315
+ if (typeof statement.iterate === "function") {
316
+ const iterate = statement.iterate.bind(statement);
317
+ Object.defineProperty(statement, "iterate", {
318
+ configurable: true,
319
+ value: (...args) => {
320
+ const iterator = !timeoutSetter && !timeoutQuery ? withinDeadline(() => iterate(...args)) : iterate(...args);
321
+ const next = iterator.next.bind(iterator);
322
+ if (timeoutSetter)
323
+ timeoutState.current = readTimeout();
324
+ iterator.next = () => {
325
+ if (timeoutQuery)
326
+ return next();
327
+ if (!timeoutSetter)
328
+ return withinDeadline(next);
329
+ const result = next();
330
+ timeoutState.current = readTimeout();
331
+ return result;
332
+ };
333
+ return iterator;
334
+ }
335
+ });
336
+ }
337
+ return statement;
338
+ }
339
+ });
340
+ }
166
341
  function installTransactionRouting(db, readonly) {
167
342
  const nativeExec = db.exec.bind(db);
168
343
  Object.defineProperty(db, "exec", {
@@ -191,7 +366,7 @@ function installTransactionRouting(db, readonly) {
191
366
  return endWriterTransaction(db, () => nativeExec(sql), sql);
192
367
  if (!/^\s*(?:SELECT|EXPLAIN|PRAGMA|COMMIT|END|ROLLBACK|SAVEPOINT|RELEASE)\b/i.test(sql)) {
193
368
  try {
194
- return withAutocommitTimeout(db, () => nativeExec(sql));
369
+ return withAutocommitTimeout(db, () => nativeExec(sql), false);
195
370
  } finally {
196
371
  if (mayChangeTagIdentity(sql))
197
372
  tagIdentityWriteGeneration += 1;
@@ -300,7 +475,7 @@ function wrapRemainingTagWriteForms(statement) {
300
475
  });
301
476
  }
302
477
  }
303
- function trackSqliteConnection(db, filename, options) {
478
+ function trackSqliteConnection(db, filename, options, turnDeadlines = false) {
304
479
  const originalClose = db.close.bind(db);
305
480
  const sequence = nextSqliteConnectionSequence++;
306
481
  const metadata = {
@@ -308,6 +483,8 @@ function trackSqliteConnection(db, filename, options) {
308
483
  filename: typeof filename === "string" ? filename : Buffer.isBuffer(filename) ? "<buffer>" : ":memory:",
309
484
  readonly: Boolean(options) && typeof options === "object" && (options.readonly === true || options.readOnly === true)
310
485
  };
486
+ if (turnDeadlines)
487
+ installNativeDeadlineRouting(db);
311
488
  installTransactionRouting(db, metadata.readonly);
312
489
  Object.defineProperty(db, "close", {
313
490
  configurable: true,
@@ -333,7 +510,7 @@ function trackSqliteConnection(db, filename, options) {
333
510
  }
334
511
  var TrackedDatabase = new Proxy(DatabaseImpl, {
335
512
  construct(target, args) {
336
- const db = Reflect.construct(target, args, target);
513
+ const db = inRootAsyncContext(() => Reflect.construct(target, args, target));
337
514
  return trackSqliteConnection(db, args[0], args[1]);
338
515
  }
339
516
  });
@@ -360,6 +537,12 @@ function buildNodeSqliteDatabaseClass(DatabaseSync) {
360
537
  return NodeSqliteDatabase;
361
538
  }
362
539
  var Database = TrackedDatabase;
540
+ function createSqliteTurnDatabase(filename, options) {
541
+ return trackSqliteConnection(new DatabaseImpl(filename, options), filename, options, true);
542
+ }
543
+ function hasSqliteTurnDeadlineRouting(db) {
544
+ return busyTimeoutStates.has(db);
545
+ }
363
546
  function getSqliteDatabasePath(db) {
364
547
  for (const connection of trackedSqliteConnections.values()) {
365
548
  if (connection.reference.deref() === db) {
@@ -379,6 +562,11 @@ function pragmaValue(db, name) {
379
562
  return row[name] ?? Object.values(row)[0];
380
563
  }
381
564
  function pragmaNumber(db, name) {
565
+ if (name === "busy_timeout") {
566
+ const state = busyTimeoutStates.get(db);
567
+ if (state)
568
+ return state.current;
569
+ }
382
570
  try {
383
571
  const value = pragmaValue(db, name);
384
572
  return typeof value === "number" && Number.isFinite(value) ? value : null;
@@ -509,11 +697,14 @@ function prepareCachedStatement(db, sql) {
509
697
  return ownPreparedStatement(db, db.prepare(sql));
510
698
  }
511
699
  var privilegeDepth = new WeakMap;
700
+ var nativeWaitScope;
512
701
  var transformPassScope = new AsyncLocalStorage;
513
702
  var admissionScope = new AsyncLocalStorage;
514
703
  var backgroundWriterScope = new AsyncLocalStorage;
515
704
  function withSqliteBackgroundWriter(operation) {
516
- return backgroundWriterScope.run(true, operation);
705
+ if (!nativeWaitScope?.getStore())
706
+ return backgroundWriterScope.run(true, operation);
707
+ return nativeWaitScope.run(undefined, () => backgroundWriterScope.run(true, operation));
517
708
  }
518
709
  function withSqliteTransformPass(operation) {
519
710
  const existing = transformPassScope.getStore();
@@ -544,7 +735,9 @@ function withSqliteTransformPass(operation) {
544
735
  return typeof reservation === "function" ? run(reservation) : reservation.then(run);
545
736
  }
546
737
  function withoutSqliteTransformPass(operation) {
547
- return transformPassScope.run(undefined, operation);
738
+ if (!nativeWaitScope?.getStore())
739
+ return transformPassScope.run(undefined, operation);
740
+ return nativeWaitScope.run(undefined, () => transformPassScope.run(undefined, operation));
548
741
  }
549
742
  function assertTransformWrite() {
550
743
  if (!backgroundWriterScope.getStore())
@@ -577,29 +770,48 @@ function foregroundWaitLease() {
577
770
  const lease = transformPassScope.getStore();
578
771
  return lease?.active && !admissionScope.getStore() && !backgroundWriterScope.getStore() ? lease : undefined;
579
772
  }
580
- function withAutocommitTimeout(db, operation) {
773
+ function withAutocommitTimeout(db, operation, singleStatement = true) {
581
774
  assertTransformWrite();
582
775
  const lease = foregroundWaitLease();
583
776
  if (isInTransaction(db))
584
777
  return operation();
585
778
  const scoped = lease || backgroundWriterScope.getStore();
586
779
  const previous = scoped ? pragmaNumber(db, "busy_timeout") : null;
587
- if (scoped)
588
- db.exec(`PRAGMA busy_timeout=${lease ? Math.floor(Math.min(lease.remainingWaitMs, lease.guard?.remainingMs() ?? Infinity)) : SHORT_BUSY_TIMEOUT_MS}`);
589
780
  const started = performance.now();
590
781
  let completed = false;
591
- try {
782
+ const execute = () => {
592
783
  const result = operation();
593
784
  completed = true;
594
785
  return result;
786
+ };
787
+ try {
788
+ if (!scoped)
789
+ return execute();
790
+ if (singleStatement) {
791
+ db.exec("PRAGMA busy_timeout=0");
792
+ try {
793
+ return execute();
794
+ } catch (error) {
795
+ if (!isTransientSqliteError(error) || isInTransaction(db))
796
+ throw error;
797
+ }
798
+ assertTransformWrite();
799
+ }
800
+ const timeout = Math.floor(Math.min(lease?.remainingWaitMs ?? SHORT_BUSY_TIMEOUT_MS, lease?.guard?.remainingMs() ?? Infinity));
801
+ db.exec(`PRAGMA busy_timeout=${timeout}`);
802
+ const waitStarted = performance.now();
803
+ try {
804
+ return execute();
805
+ } finally {
806
+ if (lease)
807
+ lease.remainingWaitMs = Math.max(0, lease.remainingWaitMs - (performance.now() - waitStarted));
808
+ }
595
809
  } catch (error) {
596
810
  if (lease && isTransientSqliteError(error))
597
811
  throw new SqliteAcquisitionBusyError(error, "autocommit");
598
812
  throw error;
599
813
  } finally {
600
814
  const elapsed = performance.now() - started;
601
- if (lease)
602
- lease.remainingWaitMs = Math.max(0, lease.remainingWaitMs - elapsed);
603
815
  if (previous !== null)
604
816
  db.exec(`PRAGMA busy_timeout=${previous}`);
605
817
  if (elapsed >= SLOW_WRITER_LOG_MS)
@@ -721,7 +933,7 @@ async function withAsyncPrivilegedWriter(db, operation, options = {}) {
721
933
  } catch (error) {
722
934
  if (entered || !(error instanceof SqliteAcquisitionBusyError))
723
935
  throw error;
724
- options.beforeRetry?.(error);
936
+ await options.beforeRetry?.(error);
725
937
  const elapsed = performance.now() - started;
726
938
  if (elapsed >= budgetMs) {
727
939
  reportSqliteDiagnostic(`sqlite writer site=privileged_writer lane=foreground acquire_ms=${Math.round(elapsed)} attempts=${attempts} outcome=busy`);
@@ -856,4 +1068,4 @@ async function withIndexChunk(input, operation) {
856
1068
  }
857
1069
  }
858
1070
 
859
- export { registerSlowWriteReporter, registerSqliteDiagnosticSink, detectSqliteRuntime, getTagIdentityWriteGeneration, Database, getSqliteDatabasePath, getSqliteMemoryStats, prepareCachedStatement, withSqliteBackgroundWriter, withSqliteTransformPass, withoutSqliteTransformPass, isTransientSqliteError, SqliteAcquisitionBusyError, beginSqliteWriterAsync, withAsyncPrivilegedWriter, withPrivilegedWriter, indexCoordinationInput, withIndexChunk };
1071
+ export { inRootAsyncContext, registerSlowWriteReporter, registerSqliteDiagnosticSink, detectSqliteRuntime, getTagIdentityWriteGeneration, Database, createSqliteTurnDatabase, hasSqliteTurnDeadlineRouting, getSqliteDatabasePath, getSqliteMemoryStats, prepareCachedStatement, withSqliteBackgroundWriter, withSqliteTransformPass, withoutSqliteTransformPass, isTransientSqliteError, SqliteAcquisitionBusyError, beginSqliteWriterAsync, withAsyncPrivilegedWriter, withPrivilegedWriter, indexCoordinationInput, withIndexChunk };
package/dist/index.js CHANGED
@@ -6,7 +6,7 @@ import {
6
6
  // package.json
7
7
  var package_default = {
8
8
  name: "@retaw106/mmc-oc",
9
- version: "2.3.0",
9
+ version: "2.5.0",
10
10
  type: "module",
11
11
  description: "OpenCode plugin for Magic Context — cross-session memory and context management",
12
12
  main: "dist/index.js",
@@ -127,7 +127,7 @@ async function setup(context) {
127
127
  log("v2 setup() called on a host without session.hook; v1 server lane owns this host, v2 lane inert");
128
128
  return async () => {};
129
129
  }
130
- const { registerContext } = await import("./context-wt7g4f8k.js");
130
+ const { registerContext } = await import("./context-xx09sh1g.js");
131
131
  setHarness("opencode2");
132
132
  const duties = await registerContext(context);
133
133
  log("[magic-context] @retaw106/mmc-oc v2 setup");
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  withSqliteBackgroundWriter,
3
3
  withoutSqliteTransformPass
4
- } from "./index-czba8tw3.js";
4
+ } from "./index-pte3cfs9.js";
5
5
  import"./index-k59af64t.js";
6
6
  import {
7
7
  logSlowWriteTransaction
@@ -0,0 +1,8 @@
1
+ import {
2
+ normalizeModelEntry2,
3
+ resolveHistorianModel2
4
+ } from "./index-azbmnekv.js";
5
+ export {
6
+ normalizeModelEntry2 as normalizeModelEntry,
7
+ resolveHistorianModel2 as resolveHistorianModel
8
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"rpc-handlers.d.ts","sourceRoot":"","sources":["../../src/plugin/rpc-handlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rpc-handlers.d.ts","sourceRoot":"","sources":["../../src/plugin/rpc-handlers.ts"],"names":[],"mappings":"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"}
@@ -6,4 +6,8 @@ export declare function hideSubagentTools(draft: {
6
6
  sessionID: string;
7
7
  tools: Record<string, unknown>;
8
8
  }, db: Database): void;
9
+ /** Apply the same request-local filtering when writer admission is unavailable. */
10
+ export declare function removePrimaryOnlyTools(tools: Record<string, unknown>): void;
11
+ /** Missing/unclassified sessions cannot authorize a busy replay. Never writes. */
12
+ export declare function storedSubagentMode(db: Database, sessionId: string): boolean | undefined;
9
13
  //# sourceMappingURL=subagent-tool-policy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"subagent-tool-policy.d.ts","sourceRoot":"","sources":["../../src/plugin/subagent-tool-policy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAIjD,sFAAsF;AACtF,wBAAgB,mBAAmB,CAC/B,EAAE,EAAE,QAAQ,EACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,eAAe,GAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAqB,GAC9D,MAAM,GAAG,SAAS,CASpB;AAED,kFAAkF;AAClF,wBAAgB,iBAAiB,CAC7B,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,EAC5D,EAAE,EAAE,QAAQ,GACb,IAAI,CAGN"}
1
+ {"version":3,"file":"subagent-tool-policy.d.ts","sourceRoot":"","sources":["../../src/plugin/subagent-tool-policy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAIjD,sFAAsF;AACtF,wBAAgB,mBAAmB,CAC/B,EAAE,EAAE,QAAQ,EACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,eAAe,GAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAqB,GAC9D,MAAM,GAAG,SAAS,CASpB;AAED,kFAAkF;AAClF,wBAAgB,iBAAiB,CAC7B,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,EAC5D,EAAE,EAAE,QAAQ,GACb,IAAI,CAGN;AAED,mFAAmF;AACnF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAE3E;AAED,kFAAkF;AAClF,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAMvF"}
@@ -24,9 +24,9 @@ import {
24
24
  getRawSessionTagKeysThrough2,
25
25
  getLegacyProtectedTailStartOrdinal2,
26
26
  readSessionChunk2
27
- } from "./index-z2w1eq3y.js";
28
- import"./index-18yrysyj.js";
29
- import"./index-czba8tw3.js";
27
+ } from "./index-1vxffj5j.js";
28
+ import"./index-bpjjcdy9.js";
29
+ import"./index-pte3cfs9.js";
30
30
  import"./index-x37vg474.js";
31
31
  import"./index-k59af64t.js";
32
32
  export {
@@ -2,13 +2,13 @@ import {
2
2
  setRecompStarting2,
3
3
  setRecompTerminal2,
4
4
  runManagedRecomp2
5
- } from "./index-3gj1ak4c.js";
6
- import"./index-kw21z5pe.js";
7
- import"./index-a5mw0xp3.js";
8
- import"./index-z2w1eq3y.js";
9
- import"./index-18yrysyj.js";
5
+ } from "./index-mjf0p7yq.js";
6
+ import"./index-0d40b4q8.js";
7
+ import"./index-k25thxq7.js";
8
+ import"./index-1vxffj5j.js";
9
+ import"./index-bpjjcdy9.js";
10
10
  import"./index-yjv8dpht.js";
11
- import"./index-czba8tw3.js";
11
+ import"./index-pte3cfs9.js";
12
12
  import"./index-jdxxq8cz.js";
13
13
  import"./index-kmbme1v1.js";
14
14
  import"./index-5ty9rnbx.js";
@@ -4,9 +4,9 @@ import {
4
4
  clearIgnoredMessages2,
5
5
  observeIgnoredNotificationEvent2,
6
6
  sendStatusNotification2
7
- } from "./index-a5mw0xp3.js";
8
- import"./index-18yrysyj.js";
9
- import"./index-czba8tw3.js";
7
+ } from "./index-k25thxq7.js";
8
+ import"./index-bpjjcdy9.js";
9
+ import"./index-pte3cfs9.js";
10
10
  import"./index-kmbme1v1.js";
11
11
  import"./index-k59af64t.js";
12
12
  export {
@@ -41,6 +41,8 @@ export interface PromptAttemptInfo {
41
41
  export interface PromptRetryOptions {
42
42
  transport?: PromptTransport;
43
43
  timeoutMs?: number;
44
+ /** False for callers whose configured model chain must not accept provider suggestions. Defaults to true. */
45
+ allowModelSuggestions?: boolean;
44
46
  /** External abort signal — cancels the in-flight LLM prompt immediately when aborted */
45
47
  signal?: AbortSignal;
46
48
  /**
@@ -115,6 +117,27 @@ export interface ModelSuggestionInfo {
115
117
  suggestion: string;
116
118
  }
117
119
  export declare function parseModelSuggestion(error: unknown): ModelSuggestionInfo | null;
120
+ /**
121
+ * Returns true if the error indicates a NON-RETRYABLE condition where iterating
122
+ * to a fallback model would be pointless or harmful:
123
+ *
124
+ * - External abort (user cancellation, lease loss, etc.) — caller wants to
125
+ * stop, not retry.
126
+ * - Context overflow — same prompt will overflow on any reasonably-sized
127
+ * model. Caller has its own emergency-recovery path for this.
128
+ * - Timeout — same wall-clock budget on the same prompt is unlikely to
129
+ * succeed on another model. Caller decides whether to retry at a higher
130
+ * level (e.g. historian's MAX_HISTORIAN_RETRIES loop).
131
+ *
132
+ * Everything else (auth errors, ProviderModelNotFoundError without suggestion,
133
+ * rate limits, transient network failures, etc.) is considered retryable on a
134
+ * different model.
135
+ * Exported as the shared fallback-switch classifier (plan 18): the
136
+ * memory-maintenance attempt loop reuses this exact predicate so "which
137
+ * failures may switch models" has ONE definition across historian and
138
+ * maintainer call sites.
139
+ */
140
+ export declare function isNonRetryable(error: unknown, externalSignal?: AbortSignal): boolean;
118
141
  /**
119
142
  * Run an OpenCode subagent prompt with model fallback support.
120
143
  *
@@ -1 +1 @@
1
- {"version":3,"file":"model-suggestion-retry.d.ts","sourceRoot":"","sources":["../../src/shared/model-suggestion-retry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-suggestion-retry.d.ts","sourceRoot":"","sources":["../../src/shared/model-suggestion-retry.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,11 @@ export declare const LIGHT_TOOL_DESCRIPTIONS: {
21
21
  * distinct semantic cache identity, including during any future asset fallback.
22
22
  */
23
23
  export declare function promptSurfaceHashMaterial(systemContent: string, preset?: PromptSurfacePreset): string;
24
+ /**
25
+ * Hash system text after the caller resolves guidance and freezes host date lines.
26
+ * Keep the legacy MD5 hex encoding so existing cached heads retain their identity.
27
+ */
28
+ export declare function systemPromptFingerprint(systemContent: string, preset?: PromptSurfacePreset): string;
24
29
  export interface PromptSurfaceGuidanceSelection {
25
30
  /** The configured built-in preset. */
26
31
  preset: PromptSurfacePreset;
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-surface-runtime.d.ts","sourceRoot":"","sources":["../../src/shared/prompt-surface-runtime.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,EACH,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EAE3B,MAAM,kBAAkB,CAAC;AAK1B;;;;GAIG;AACH,eAAO,MAAM,eAAe,+EAMlB,CAAC;AAEX,gFAAgF;AAChF,eAAO,MAAM,uBAAuB,+EAAkB,CAAC;AAEvD,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnE,eAAO,MAAM,uBAAuB;;;;;;CAM8B,CAAC;AAEnE;;;GAGG;AACH,wBAAgB,yBAAyB,CACrC,aAAa,EAAE,MAAM,EACrB,MAAM,GAAE,mBAA4B,GACrC,MAAM,CAIR;AAID,MAAM,WAAW,8BAA8B;IAC3C,sCAAsC;IACtC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,qFAAqF;IACrF,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,kCAAkC;IAC/C,MAAM,EAAE,mBAAmB,CAAC;IAC5B,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,KAAK,MAAM,CAAC;CACvE;AAED,MAAM,WAAW,oBAAoB;IACjC,mBAAmB,EAAE,CACjB,MAAM,EAAE,mBAAmB,GAAG,SAAS,EACvC,QAAQ,CAAC,EAAE,MAAM,KAChB,kCAAkC,CAAC;IACxC,eAAe,EAAE,CACb,MAAM,EAAE,mBAAmB,GAAG,SAAS,EACvC,QAAQ,EAAE,MAAM,GAAG,SAAS,KAC3B,8BAA8B,CAAC;CACvC;AAED,MAAM,WAAW,iCAAiC;IAC9C,kFAAkF;IAClF,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oFAAoF;IACpF,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAWD;;;;GAIG;AACH,wBAAgB,0BAA0B,CACtC,OAAO,EAAE,iCAAiC,GAC3C,oBAAoB,CAmGtB;AAQD,MAAM,WAAW,+BAA+B;IAC5C,OAAO,EAAE,CACL,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,mBAAmB,GAAG,SAAS,EACvC,QAAQ,EAAE,MAAM,GAAG,SAAS,KAC3B,8BAA8B,CAAC;IACpC,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;AAOD;;;;GAIG;AACH,wBAAgB,qCAAqC,CACjD,OAAO,EAAE,oBAAoB,GAC9B,+BAA+B,CAuBjC"}
1
+ {"version":3,"file":"prompt-surface-runtime.d.ts","sourceRoot":"","sources":["../../src/shared/prompt-surface-runtime.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,EACH,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EAE3B,MAAM,kBAAkB,CAAC;AAK1B;;;;GAIG;AACH,eAAO,MAAM,eAAe,+EAMlB,CAAC;AAEX,gFAAgF;AAChF,eAAO,MAAM,uBAAuB,+EAAkB,CAAC;AAEvD,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnE,eAAO,MAAM,uBAAuB;;;;;;CAM8B,CAAC;AAEnE;;;GAGG;AACH,wBAAgB,yBAAyB,CACrC,aAAa,EAAE,MAAM,EACrB,MAAM,GAAE,mBAA4B,GACrC,MAAM,CAIR;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACnC,aAAa,EAAE,MAAM,EACrB,MAAM,GAAE,mBAA4B,GACrC,MAAM,CAER;AAID,MAAM,WAAW,8BAA8B;IAC3C,sCAAsC;IACtC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,qFAAqF;IACrF,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,kCAAkC;IAC/C,MAAM,EAAE,mBAAmB,CAAC;IAC5B,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,KAAK,MAAM,CAAC;CACvE;AAED,MAAM,WAAW,oBAAoB;IACjC,mBAAmB,EAAE,CACjB,MAAM,EAAE,mBAAmB,GAAG,SAAS,EACvC,QAAQ,CAAC,EAAE,MAAM,KAChB,kCAAkC,CAAC;IACxC,eAAe,EAAE,CACb,MAAM,EAAE,mBAAmB,GAAG,SAAS,EACvC,QAAQ,EAAE,MAAM,GAAG,SAAS,KAC3B,8BAA8B,CAAC;CACvC;AAED,MAAM,WAAW,iCAAiC;IAC9C,kFAAkF;IAClF,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oFAAoF;IACpF,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAWD;;;;GAIG;AACH,wBAAgB,0BAA0B,CACtC,OAAO,EAAE,iCAAiC,GAC3C,oBAAoB,CAmGtB;AAQD,MAAM,WAAW,+BAA+B;IAC5C,OAAO,EAAE,CACL,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,mBAAmB,GAAG,SAAS,EACvC,QAAQ,EAAE,MAAM,GAAG,SAAS,KAC3B,8BAA8B,CAAC;IACpC,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;AAOD;;;;GAIG;AACH,wBAAgB,qCAAqC,CACjD,OAAO,EAAE,oBAAoB,GAC9B,+BAA+B,CAuBjC"}
@@ -0,0 +1,33 @@
1
+ export declare const RECLAIM_DISTANCE_USER_TURNS = 3;
2
+ export declare const RECLAIM_DISTANCE_WINDOW_FRACTION = 0.25;
3
+ export interface ReclaimDistanceEntry {
4
+ /** Local content tokens, excluding Magic Context's history and reduction/note reminders. */
5
+ tokens: number;
6
+ /** One event per authored user-role message, after any folded tool results. */
7
+ userTurn?: boolean;
8
+ /** Durable identifier of the tool invocation whose result ends at this entry. */
9
+ toolOutputTag?: number;
10
+ }
11
+ /** Only authored content starts a user turn; host control notices do not. */
12
+ export declare function isReclaimUserTurn(args: {
13
+ role?: string;
14
+ syntheticHead?: boolean;
15
+ synthetic?: boolean;
16
+ ignored?: boolean;
17
+ parts: readonly {
18
+ kind: string;
19
+ text?: string;
20
+ synthetic?: boolean;
21
+ ignored?: boolean;
22
+ }[];
23
+ }): boolean;
24
+ /** Remove Magic Context's reduction/note reminders, not generic host wake notices. */
25
+ export declare function stripReclaimMcText(text: string): string;
26
+ /**
27
+ * A free cache rebuild is not evidence that the model has moved on. An output
28
+ * is far behind only after three newer user turns or a quarter-window of newer
29
+ * content. Return a prefix of qualifying tags; callers drop against the PREVIOUS
30
+ * durable bookmark before advancing it, so distance must survive two rebuilds.
31
+ */
32
+ export declare function farBehindToolBookmark(entries: readonly ReclaimDistanceEntry[], usableWindow: number): number;
33
+ //# sourceMappingURL=reclaim-distance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reclaim-distance.d.ts","sourceRoot":"","sources":["../../src/shared/reclaim-distance.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAC7C,eAAO,MAAM,gCAAgC,OAAO,CAAC;AAErD,MAAM,WAAW,oBAAoB;IACjC,4FAA4F;IAC5F,MAAM,EAAE,MAAM,CAAC;IACf,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iFAAiF;IACjF,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,6EAA6E;AAC7E,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;CAC7F,GAAG,OAAO,CAaV;AAED,sFAAsF;AACtF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAWvD;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACjC,OAAO,EAAE,SAAS,oBAAoB,EAAE,EACxC,YAAY,EAAE,MAAM,GACrB,MAAM,CAiCR"}
@@ -0,0 +1,3 @@
1
+ /** Reap only records proven dead; live, unreadable and uncertain records stay. */
2
+ export declare function reapDeadRpcDiscovery(storageDir: string): Promise<void>;
3
+ //# sourceMappingURL=rpc-discovery-cleanup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc-discovery-cleanup.d.ts","sourceRoot":"","sources":["../../src/shared/rpc-discovery-cleanup.ts"],"names":[],"mappings":"AAIA,kFAAkF;AAClF,wBAAsB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmD5E"}