@wolfx/opencode-magic-context 0.22.3 → 0.23.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 (195) hide show
  1. package/dist/agents/magic-context-prompt.d.ts +1 -1
  2. package/dist/agents/magic-context-prompt.d.ts.map +1 -1
  3. package/dist/agents/permissions.d.ts +4 -4
  4. package/dist/agents/permissions.d.ts.map +1 -1
  5. package/dist/config/index.d.ts.map +1 -1
  6. package/dist/config/project-security.d.ts +30 -0
  7. package/dist/config/project-security.d.ts.map +1 -0
  8. package/dist/config/prune-config-leaf.d.ts +27 -0
  9. package/dist/config/prune-config-leaf.d.ts.map +1 -0
  10. package/dist/config/schema/magic-context.d.ts +7 -13
  11. package/dist/config/schema/magic-context.d.ts.map +1 -1
  12. package/dist/config/variable.d.ts.map +1 -1
  13. package/dist/features/magic-context/compartment-storage.d.ts +9 -6
  14. package/dist/features/magic-context/compartment-storage.d.ts.map +1 -1
  15. package/dist/features/magic-context/dreamer/runner.d.ts.map +1 -1
  16. package/dist/features/magic-context/dreamer/scheduler.d.ts.map +1 -1
  17. package/dist/features/magic-context/dreamer/task-prompts.d.ts +1 -1
  18. package/dist/features/magic-context/dreamer/task-prompts.d.ts.map +1 -1
  19. package/dist/features/magic-context/key-files/aft-availability.d.ts.map +1 -1
  20. package/dist/features/magic-context/key-files/identify-key-files.d.ts.map +1 -1
  21. package/dist/features/magic-context/key-files/read-stats.d.ts +0 -2
  22. package/dist/features/magic-context/key-files/read-stats.d.ts.map +1 -1
  23. package/dist/features/magic-context/memory/constants.d.ts +7 -0
  24. package/dist/features/magic-context/memory/constants.d.ts.map +1 -1
  25. package/dist/features/magic-context/memory/embedding-openai.d.ts.map +1 -1
  26. package/dist/features/magic-context/memory/embedding-ssrf.d.ts +29 -0
  27. package/dist/features/magic-context/memory/embedding-ssrf.d.ts.map +1 -0
  28. package/dist/features/magic-context/memory/memory-migration.d.ts.map +1 -1
  29. package/dist/features/magic-context/memory/project-identity.d.ts +10 -0
  30. package/dist/features/magic-context/memory/project-identity.d.ts.map +1 -1
  31. package/dist/features/magic-context/migrations.d.ts.map +1 -1
  32. package/dist/features/magic-context/project-docs-hash.d.ts.map +1 -1
  33. package/dist/features/magic-context/project-embedding-registry.d.ts.map +1 -1
  34. package/dist/features/magic-context/range-parser.d.ts +6 -0
  35. package/dist/features/magic-context/range-parser.d.ts.map +1 -1
  36. package/dist/features/magic-context/sidekick/agent.d.ts.map +1 -1
  37. package/dist/features/magic-context/storage-db.d.ts +1 -1
  38. package/dist/features/magic-context/storage-db.d.ts.map +1 -1
  39. package/dist/features/magic-context/storage-meta-persisted.d.ts +124 -16
  40. package/dist/features/magic-context/storage-meta-persisted.d.ts.map +1 -1
  41. package/dist/features/magic-context/storage-meta-session.d.ts.map +1 -1
  42. package/dist/features/magic-context/storage-meta-shared.d.ts +15 -1
  43. package/dist/features/magic-context/storage-meta-shared.d.ts.map +1 -1
  44. package/dist/features/magic-context/storage-meta.d.ts +1 -1
  45. package/dist/features/magic-context/storage-meta.d.ts.map +1 -1
  46. package/dist/features/magic-context/storage-notes.d.ts.map +1 -1
  47. package/dist/features/magic-context/storage-tags.d.ts +118 -1
  48. package/dist/features/magic-context/storage-tags.d.ts.map +1 -1
  49. package/dist/features/magic-context/storage.d.ts +3 -3
  50. package/dist/features/magic-context/storage.d.ts.map +1 -1
  51. package/dist/features/magic-context/tagger.d.ts +12 -2
  52. package/dist/features/magic-context/tagger.d.ts.map +1 -1
  53. package/dist/features/magic-context/tool-definition-tokens.d.ts +21 -0
  54. package/dist/features/magic-context/tool-definition-tokens.d.ts.map +1 -1
  55. package/dist/features/magic-context/tool-owner-backfill.d.ts +2 -1
  56. package/dist/features/magic-context/tool-owner-backfill.d.ts.map +1 -1
  57. package/dist/features/magic-context/types.d.ts +12 -0
  58. package/dist/features/magic-context/types.d.ts.map +1 -1
  59. package/dist/features/magic-context/user-memory/review-user-memories.d.ts.map +1 -1
  60. package/dist/hooks/magic-context/auto-search-runner.d.ts.map +1 -1
  61. package/dist/hooks/magic-context/channel2-delivery.d.ts +22 -0
  62. package/dist/hooks/magic-context/channel2-delivery.d.ts.map +1 -0
  63. package/dist/hooks/magic-context/command-handler.d.ts +1 -7
  64. package/dist/hooks/magic-context/command-handler.d.ts.map +1 -1
  65. package/dist/hooks/magic-context/compaction-marker-manager.d.ts +1 -1
  66. package/dist/hooks/magic-context/compaction-marker-manager.d.ts.map +1 -1
  67. package/dist/hooks/magic-context/compartment-runner-historian.d.ts.map +1 -1
  68. package/dist/hooks/magic-context/compartment-runner-incremental.d.ts.map +1 -1
  69. package/dist/hooks/magic-context/compartment-runner-partial-recomp.d.ts.map +1 -1
  70. package/dist/hooks/magic-context/compartment-runner-recomp.d.ts.map +1 -1
  71. package/dist/hooks/magic-context/compartment-runner-types.d.ts +5 -0
  72. package/dist/hooks/magic-context/compartment-runner-types.d.ts.map +1 -1
  73. package/dist/hooks/magic-context/compartment-runner-validation.d.ts +25 -0
  74. package/dist/hooks/magic-context/compartment-runner-validation.d.ts.map +1 -1
  75. package/dist/hooks/magic-context/compartment-runner.d.ts.map +1 -1
  76. package/dist/hooks/magic-context/compartment-trigger.d.ts +47 -2
  77. package/dist/hooks/magic-context/compartment-trigger.d.ts.map +1 -1
  78. package/dist/hooks/magic-context/ctx-reduce-nudge.d.ts +117 -0
  79. package/dist/hooks/magic-context/ctx-reduce-nudge.d.ts.map +1 -0
  80. package/dist/hooks/magic-context/decay-render.d.ts.map +1 -1
  81. package/dist/hooks/magic-context/drop-stale-reduce-calls.d.ts +36 -1
  82. package/dist/hooks/magic-context/drop-stale-reduce-calls.d.ts.map +1 -1
  83. package/dist/hooks/magic-context/emergency-drop.d.ts +86 -0
  84. package/dist/hooks/magic-context/emergency-drop.d.ts.map +1 -0
  85. package/dist/hooks/magic-context/event-handler.d.ts +6 -4
  86. package/dist/hooks/magic-context/event-handler.d.ts.map +1 -1
  87. package/dist/hooks/magic-context/execute-flush.d.ts.map +1 -1
  88. package/dist/hooks/magic-context/execute-status.d.ts +1 -1
  89. package/dist/hooks/magic-context/execute-status.d.ts.map +1 -1
  90. package/dist/hooks/magic-context/heuristic-cleanup.d.ts +10 -3
  91. package/dist/hooks/magic-context/heuristic-cleanup.d.ts.map +1 -1
  92. package/dist/hooks/magic-context/hook-handlers.d.ts +3 -9
  93. package/dist/hooks/magic-context/hook-handlers.d.ts.map +1 -1
  94. package/dist/hooks/magic-context/hook.d.ts +3 -5
  95. package/dist/hooks/magic-context/hook.d.ts.map +1 -1
  96. package/dist/hooks/magic-context/inject-compartments.d.ts +41 -0
  97. package/dist/hooks/magic-context/inject-compartments.d.ts.map +1 -1
  98. package/dist/hooks/magic-context/note-visibility.d.ts +1 -1
  99. package/dist/hooks/magic-context/protected-tail-boundary.d.ts +132 -0
  100. package/dist/hooks/magic-context/protected-tail-boundary.d.ts.map +1 -0
  101. package/dist/hooks/magic-context/read-session-chunk.d.ts +55 -0
  102. package/dist/hooks/magic-context/read-session-chunk.d.ts.map +1 -1
  103. package/dist/hooks/magic-context/read-session-formatting.d.ts.map +1 -1
  104. package/dist/hooks/magic-context/read-session-raw.d.ts +91 -0
  105. package/dist/hooks/magic-context/read-session-raw.d.ts.map +1 -1
  106. package/dist/hooks/magic-context/read-session-true-raw-tokens.d.ts +70 -0
  107. package/dist/hooks/magic-context/read-session-true-raw-tokens.d.ts.map +1 -0
  108. package/dist/hooks/magic-context/reference-retrieval.d.ts.map +1 -1
  109. package/dist/hooks/magic-context/send-session-notification.d.ts +2 -1
  110. package/dist/hooks/magic-context/send-session-notification.d.ts.map +1 -1
  111. package/dist/hooks/magic-context/system-prompt-hash.d.ts +0 -1
  112. package/dist/hooks/magic-context/system-prompt-hash.d.ts.map +1 -1
  113. package/dist/hooks/magic-context/tag-messages.d.ts +3 -0
  114. package/dist/hooks/magic-context/tag-messages.d.ts.map +1 -1
  115. package/dist/hooks/magic-context/todo-view.d.ts +1 -1
  116. package/dist/hooks/magic-context/tool-drop-target.d.ts +9 -0
  117. package/dist/hooks/magic-context/tool-drop-target.d.ts.map +1 -1
  118. package/dist/hooks/magic-context/transform-compartment-phase.d.ts +15 -0
  119. package/dist/hooks/magic-context/transform-compartment-phase.d.ts.map +1 -1
  120. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts +9 -11
  121. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts.map +1 -1
  122. package/dist/hooks/magic-context/transform.d.ts +22 -9
  123. package/dist/hooks/magic-context/transform.d.ts.map +1 -1
  124. package/dist/hooks/magic-context/upgrade-reminder.d.ts +2 -1
  125. package/dist/hooks/magic-context/upgrade-reminder.d.ts.map +1 -1
  126. package/dist/index.d.ts.map +1 -1
  127. package/dist/index.js +5915 -1336
  128. package/dist/plugin/conflict-warning-hook.d.ts.map +1 -1
  129. package/dist/plugin/embedding-bootstrap-helpers.d.ts.map +1 -1
  130. package/dist/plugin/hooks/create-session-hooks.d.ts +1 -1
  131. package/dist/plugin/hooks/create-session-hooks.d.ts.map +1 -1
  132. package/dist/plugin/rpc-handlers.d.ts.map +1 -1
  133. package/dist/plugin/tool-registry.d.ts.map +1 -1
  134. package/dist/shared/announcement.d.ts +4 -6
  135. package/dist/shared/announcement.d.ts.map +1 -1
  136. package/dist/shared/keep-subagents.d.ts +7 -0
  137. package/dist/shared/keep-subagents.d.ts.map +1 -0
  138. package/dist/shared/live-server-client.d.ts +50 -0
  139. package/dist/shared/live-server-client.d.ts.map +1 -0
  140. package/dist/shared/prompt-context.d.ts +31 -0
  141. package/dist/shared/prompt-context.d.ts.map +1 -0
  142. package/dist/shared/rpc-server.d.ts.map +1 -1
  143. package/dist/shared/rpc-types.d.ts +0 -3
  144. package/dist/shared/rpc-types.d.ts.map +1 -1
  145. package/dist/shared/safe-notification-target.d.ts +23 -0
  146. package/dist/shared/safe-notification-target.d.ts.map +1 -0
  147. package/dist/shared/tag-transcript.d.ts.map +1 -1
  148. package/dist/shared/transcript-opencode.d.ts.map +1 -1
  149. package/dist/shared/transcript.d.ts +15 -1
  150. package/dist/shared/transcript.d.ts.map +1 -1
  151. package/dist/tools/ctx-expand/constants.d.ts +1 -1
  152. package/dist/tools/ctx-expand/constants.d.ts.map +1 -1
  153. package/dist/tools/ctx-expand/tools.d.ts.map +1 -1
  154. package/dist/tools/ctx-memory/constants.d.ts +1 -1
  155. package/dist/tools/ctx-memory/constants.d.ts.map +1 -1
  156. package/dist/tools/ctx-memory/tools.d.ts.map +1 -1
  157. package/dist/tools/ctx-memory/types.d.ts +7 -3
  158. package/dist/tools/ctx-memory/types.d.ts.map +1 -1
  159. package/dist/tools/ctx-note/constants.d.ts +1 -1
  160. package/dist/tools/ctx-note/constants.d.ts.map +1 -1
  161. package/dist/tools/ctx-note/tools.d.ts.map +1 -1
  162. package/dist/tools/ctx-note/types.d.ts +4 -0
  163. package/dist/tools/ctx-note/types.d.ts.map +1 -1
  164. package/dist/tools/ctx-search/constants.d.ts +1 -1
  165. package/dist/tools/ctx-search/constants.d.ts.map +1 -1
  166. package/dist/tools/ctx-search/tools.d.ts.map +1 -1
  167. package/dist/tui/data/context-db.d.ts.map +1 -1
  168. package/package.json +3 -1
  169. package/src/shared/announcement.test.ts +18 -0
  170. package/src/shared/announcement.ts +35 -20
  171. package/src/shared/keep-subagents.test.ts +39 -0
  172. package/src/shared/keep-subagents.ts +33 -0
  173. package/src/shared/live-server-client.ts +152 -0
  174. package/src/shared/prompt-context.ts +135 -0
  175. package/src/shared/rpc-server.ts +18 -2
  176. package/src/shared/rpc-types.ts +0 -3
  177. package/src/shared/safe-notification-target.test.ts +97 -0
  178. package/src/shared/safe-notification-target.ts +102 -0
  179. package/src/shared/tag-transcript.test.ts +34 -8
  180. package/src/shared/tag-transcript.ts +110 -8
  181. package/src/shared/transcript-opencode.ts +15 -5
  182. package/src/shared/transcript.ts +20 -2
  183. package/src/tui/data/context-db.ts +0 -3
  184. package/src/tui/index.tsx +11 -10
  185. package/src/tui/slots/sidebar-content.tsx +1 -26
  186. package/dist/hooks/magic-context/apply-context-nudge.d.ts +0 -5
  187. package/dist/hooks/magic-context/apply-context-nudge.d.ts.map +0 -1
  188. package/dist/hooks/magic-context/nudge-bands.d.ts +0 -6
  189. package/dist/hooks/magic-context/nudge-bands.d.ts.map +0 -1
  190. package/dist/hooks/magic-context/nudge-injection.d.ts +0 -7
  191. package/dist/hooks/magic-context/nudge-injection.d.ts.map +0 -1
  192. package/dist/hooks/magic-context/nudge-placement-store.d.ts +0 -15
  193. package/dist/hooks/magic-context/nudge-placement-store.d.ts.map +0 -1
  194. package/dist/hooks/magic-context/nudger.d.ts +0 -21
  195. package/dist/hooks/magic-context/nudger.d.ts.map +0 -1
@@ -0,0 +1,86 @@
1
+ /** Reclaim target = fixedFloor + TARGET_FRACTION × (ceiling − fixedFloor). */
2
+ export declare const TARGET_FRACTION = 0.3;
3
+ /** Keep the newest `ceil(RESERVE × tierCount)` of T1/T2 as continuation context. */
4
+ export declare const TIER_RECENCY_RESERVE = 0.2;
5
+ /**
6
+ * Don't bust the cache for a trivial reclaim. If the computed reclaim is at or
7
+ * below this, the pass is a no-op (combined with the watermark, this prevents
8
+ * 85%-94.9% oscillation).
9
+ */
10
+ export declare const EMERGENCY_REARM_MIN_TOKENS = 2000;
11
+ export type Tier = 1 | 2 | 3;
12
+ /**
13
+ * Classify a tool into its drop tier. T1 (keep longest) = navigation/structure
14
+ * the agent re-uses; T2 (medium) = edit-class continuation context; T3 (drop
15
+ * first) = everything else (the default — bash, ctx_reduce, inspect, web, …).
16
+ */
17
+ export declare function resolveToolTier(toolName: string | null): Tier;
18
+ /** Minimal tag shape the planner needs (subset of TagEntry, harness-agnostic). */
19
+ export interface EmergencyDropTag {
20
+ tagNumber: number;
21
+ type: "message" | "tool" | "file";
22
+ status: "active" | "dropped" | "compacted";
23
+ toolName: string | null;
24
+ byteSize: number;
25
+ /** Tool-arg bytes — `drop()` removes the invocation too, so these reclaim. */
26
+ inputByteSize: number;
27
+ reasoningByteSize: number;
28
+ }
29
+ export interface EmergencyDropPlan {
30
+ /** Whether the caller should perform any drop this pass. */
31
+ shouldDrop: boolean;
32
+ /** Tool tag numbers to drop, in eviction order (T3→T2→T1, oldest-first). */
33
+ tagNumbers: number[];
34
+ /** Reclaim target in tokens (for logging). */
35
+ reclaimTokens: number;
36
+ /** Human-readable reason (no-op explanation or drop summary), for logs. */
37
+ reason: string;
38
+ }
39
+ /**
40
+ * Plan a tiered target-headroom emergency drop. Pure: returns the ordered set of
41
+ * tool tag numbers to drop plus the new watermark; the caller applies them.
42
+ *
43
+ * fixedFloor is derived as `currentTotalInputTokens − Σ(active floor-tag tokens)`.
44
+ * Tags cover exactly the live-tail content (messages, tool outputs, files,
45
+ * reasoning); system, tool defs, and m[0]/m[1] are untagged. So this difference
46
+ * IS `system + toolDefs + (primary ? m0 + m1 : 0)` — the irreducible prefix —
47
+ * with no extra plumbing, and it self-adjusts for subagents (no m0/m1 in their
48
+ * total) by construction.
49
+ *
50
+ * The two tag sets serve DIFFERENT contracts and must not be conflated:
51
+ * - `floorTags`: the ENTIRE active live-window tag set (all types, including
52
+ * non-droppable tool tags). Only their token sum matters — it makes
53
+ * `fixedFloor` the true irreducible prefix. Passing a narrower set (e.g.
54
+ * tool-only) folds real conversation/reasoning tail into the "floor",
55
+ * raising the target and systematically under-evicting at ≥85%.
56
+ * - `tags`: the evictable candidates — active tool tags whose drop target
57
+ * would actually reclaim bytes (caller pre-filters on `canDrop()` so no
58
+ * phantom tag is counted as reclaimed).
59
+ */
60
+ export declare function planEmergencyDrop(input: {
61
+ /** Evictable candidates: active tool tags with a working drop target. */
62
+ tags: readonly EmergencyDropTag[];
63
+ /**
64
+ * FULL active live-window tag set (all types) — floor accounting only.
65
+ * See the fixedFloor contract above.
66
+ */
67
+ floorTags: readonly EmergencyDropTag[];
68
+ maxTag: number;
69
+ protectedTags: number;
70
+ currentTotalInputTokens: number;
71
+ /** ceiling = contextLimit × executeThreshold%. */
72
+ ceilingTokens: number;
73
+ /**
74
+ * last_emergency_input_sample — the `currentTotalInputTokens` reading at the
75
+ * previous emergency drop (0 if never dropped). The SOLE idempotence latch:
76
+ * see the same-sample no-op below. (There is deliberately no tag-number
77
+ * watermark — a scalar "dropped-through" cursor wrongly excludes still-active
78
+ * lower-numbered tags after a non-contiguous tier-ordered drop. Dropped tags
79
+ * leave the `status='active'` set, so they're never re-selected; the sample
80
+ * latch is what prevents over-dropping the rest of the tail on a stale pass.)
81
+ */
82
+ priorInputSample: number;
83
+ /** True once any emergency drop has happened (drives the latch + log). */
84
+ hasPriorDrop: boolean;
85
+ }): EmergencyDropPlan;
86
+ //# sourceMappingURL=emergency-drop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emergency-drop.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/emergency-drop.ts"],"names":[],"mappings":"AAqBA,8EAA8E;AAC9E,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC,oFAAoF;AACpF,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAExC;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,OAAO,CAAC;AAE/C,MAAM,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAiB7B;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAK7D;AAED,kFAAkF;AAClF,MAAM,WAAW,gBAAgB;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;IAClC,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,WAAW,CAAC;IAC3C,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;CAC7B;AAaD,MAAM,WAAW,iBAAiB;IAC9B,4DAA4D;IAC5D,UAAU,EAAE,OAAO,CAAC;IACpB,4EAA4E;IAC5E,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,8CAA8C;IAC9C,aAAa,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,MAAM,EAAE,MAAM,CAAC;CAClB;AAMD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACrC,yEAAyE;IACzE,IAAI,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAClC;;;OAGG;IACH,SAAS,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,uBAAuB,EAAE,MAAM,CAAC;IAChC,kDAAkD;IAClD,aAAa,EAAE,MAAM,CAAC;IACtB;;;;;;;;OAQG;IACH,gBAAgB,EAAE,MAAM,CAAC;IACzB,0EAA0E;IAC1E,YAAY,EAAE,OAAO,CAAC;CACzB,GAAG,iBAAiB,CAuHpB"}
@@ -2,7 +2,6 @@ import type { createCompactionHandler } from "../../features/magic-context/compa
2
2
  import type { Tagger } from "../../features/magic-context/tagger";
3
3
  import type { ContextUsage } from "../../features/magic-context/types";
4
4
  import { type NotificationParams } from "./send-session-notification";
5
- import { type NudgePlacementStore } from "./transform";
6
5
  type CacheTtlConfig = string | Record<string, string>;
7
6
  interface ContextUsageEntry {
8
7
  usage: ContextUsage;
@@ -12,13 +11,10 @@ interface ContextUsageEntry {
12
11
  export interface EventHandlerDeps {
13
12
  contextUsageMap: Map<string, ContextUsageEntry>;
14
13
  compactionHandler: ReturnType<typeof createCompactionHandler>;
15
- nudgePlacements: NudgePlacementStore;
16
14
  onSessionCacheInvalidated?: (sessionId: string) => void;
17
15
  onSessionDeleted?: (sessionId: string) => void;
18
16
  config: {
19
17
  protected_tags: number;
20
- auto_drop_tool_age?: number;
21
- drop_tool_structure?: boolean;
22
18
  clear_reasoning_age?: number;
23
19
  execute_threshold_percentage?: number | {
24
20
  default: number;
@@ -37,6 +33,12 @@ export interface EventHandlerDeps {
37
33
  tagger: Tagger;
38
34
  db: import("../../shared/sqlite").Database;
39
35
  client?: unknown;
36
+ /** Live HTTP listener URL — Channel 2 ceiling nudge delivery (#28202 workaround). */
37
+ serverUrl?: string;
38
+ /** Project directory — passed to the live-server client for Channel 2. */
39
+ directory?: string;
40
+ /** Channel 1 per-session metric baseline; read for the Channel 2 ceiling-nudge wording. */
41
+ channel1StateBySession?: Map<string, import("./ctx-reduce-nudge").Channel1State>;
40
42
  getNotificationParams?: (sessionId: string) => NotificationParams;
41
43
  /**
42
44
  * Process-scoped set of Magic Context's own hidden child sessions, keyed by
@@ -1 +1 @@
1
- {"version":3,"file":"event-handler.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/event-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AA6BvF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAsBvE,OAAO,EAAE,KAAK,kBAAkB,EAAsB,MAAM,6BAA6B,CAAC;AAC1F,OAAO,EAA2B,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAKhF,KAAK,cAAc,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEtD,UAAU,iBAAiB;IACvB,KAAK,EAAE,YAAY,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAOD,MAAM,WAAW,gBAAgB;IAC7B,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAChD,iBAAiB,EAAE,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC;IAC9D,eAAe,EAAE,mBAAmB,CAAC;IACrC,yBAAyB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACxD,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,MAAM,EAAE;QACJ,cAAc,EAAE,MAAM,CAAC;QACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAC;QAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,4BAA4B,CAAC,EAAE,MAAM,GAAG;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAA;SAAE,CAAC;QACxF,wBAAwB,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;SAAE,CAAC;QACxF,SAAS,EAAE,cAAc,CAAC;QAC1B,sBAAsB,CAAC,EAAE;YAAE,OAAO,EAAE,OAAO,CAAC;YAAC,YAAY,EAAE,MAAM,CAAA;SAAE,CAAC;KACvE,CAAC;IACF,MAAM,EAAE,MAAM,CAAC;IAIf,EAAE,EAAE,OAAO,qBAAqB,EAAE,QAAQ,CAAC;IAC3C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qBAAqB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,kBAAkB,CAAC;IAClE;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACvC;AA2HD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,IACvC,OAAO;IAAE,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,CAAA;CAAE,KAAG,OAAO,CAAC,IAAI,CAAC,CA2ezF"}
1
+ {"version":3,"file":"event-handler.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/event-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAyBvF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAe,MAAM,oCAAoC,CAAC;AAqBpF,OAAO,EAAE,KAAK,kBAAkB,EAAsB,MAAM,6BAA6B,CAAC;AAM1F,KAAK,cAAc,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEtD,UAAU,iBAAiB;IACvB,KAAK,EAAE,YAAY,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAMD,MAAM,WAAW,gBAAgB;IAC7B,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAChD,iBAAiB,EAAE,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC;IAC9D,yBAAyB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACxD,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,MAAM,EAAE;QACJ,cAAc,EAAE,MAAM,CAAC;QACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,4BAA4B,CAAC,EAAE,MAAM,GAAG;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAA;SAAE,CAAC;QACxF,wBAAwB,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;SAAE,CAAC;QACxF,SAAS,EAAE,cAAc,CAAC;QAC1B,sBAAsB,CAAC,EAAE;YAAE,OAAO,EAAE,OAAO,CAAC;YAAC,YAAY,EAAE,MAAM,CAAA;SAAE,CAAC;KACvE,CAAC;IACF,MAAM,EAAE,MAAM,CAAC;IAIf,EAAE,EAAE,OAAO,qBAAqB,EAAE,QAAQ,CAAC;IAC3C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qFAAqF;IACrF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2FAA2F;IAC3F,sBAAsB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,oBAAoB,EAAE,aAAa,CAAC,CAAC;IACjF,qBAAqB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,kBAAkB,CAAC;IAClE;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACvC;AAoID,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,IACvC,OAAO;IAAE,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,CAAA;CAAE,KAAG,OAAO,CAAC,IAAI,CAAC,CAsezF"}
@@ -1 +1 @@
1
- {"version":3,"file":"execute-flush.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/execute-flush.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpD,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CA8BpE"}
1
+ {"version":3,"file":"execute-flush.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/execute-flush.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpD,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CA0BpE"}
@@ -1,5 +1,5 @@
1
1
  import type { Database } from "../../shared/sqlite";
2
- export declare function executeStatus(db: Database, sessionId: string, protectedTags: number, nudgeIntervalTokens?: number, executeThresholdPercentageConfig?: number | {
2
+ export declare function executeStatus(db: Database, sessionId: string, protectedTags: number, executeThresholdPercentageConfig?: number | {
3
3
  default: number;
4
4
  [modelKey: string]: number;
5
5
  }, liveModelKey?: string, historyBudgetPercentage?: number, commitClusterTrigger?: {
@@ -1 +1 @@
1
- {"version":3,"file":"execute-status.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/execute-status.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AA8BpD,wBAAgB,aAAa,CACzB,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,mBAAmB,GAAE,MAAsC,EAC3D,gCAAgC,GAC1B,MAAM,GACN;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAA;CAAyC,EAC5F,YAAY,CAAC,EAAE,MAAM,EACrB,uBAAuB,CAAC,EAAE,MAAM,EAChC,oBAAoB,CAAC,EAAE;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,EACjE,sBAAsB,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;CAAE,EACrF,YAAY,CAAC,EAAE,MAAM,GACtB,MAAM,CA6JR"}
1
+ {"version":3,"file":"execute-status.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/execute-status.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAyBpD,wBAAgB,aAAa,CACzB,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,gCAAgC,GAC1B,MAAM,GACN;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAA;CAAyC,EAC5F,YAAY,CAAC,EAAE,MAAM,EACrB,uBAAuB,CAAC,EAAE,MAAM,EAChC,oBAAoB,CAAC,EAAE;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,EACjE,sBAAsB,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;CAAE,EACrF,YAAY,CAAC,EAAE,MAAM,GACtB,MAAM,CAmJR"}
@@ -3,10 +3,17 @@ import type { TagEntry } from "../../features/magic-context/types";
3
3
  import { type CavemanCleanupConfig } from "./caveman-cleanup";
4
4
  import type { MessageLike, TagTarget } from "./tag-messages";
5
5
  export declare function applyHeuristicCleanup(sessionId: string, db: ContextDatabase, targets: Map<number, TagTarget>, messageTagNumbers: Map<MessageLike, number>, config: {
6
- autoDropToolAge: number;
7
- dropToolStructure: boolean;
8
6
  protectedTags: number;
9
- dropAllTools?: boolean;
7
+ /**
8
+ * Tiered target-headroom emergency drop. Provided only on the ≥85%
9
+ * force-materialize (cache-busting) pass; undefined on routine execute
10
+ * passes (Phase 2 removed routine age-based tool drops entirely). When
11
+ * present, the emergency drop runs before dedup/injection-strip.
12
+ */
13
+ emergency?: {
14
+ currentTotalInputTokens: number;
15
+ ceilingTokens: number;
16
+ };
10
17
  /**
11
18
  * Age-tier caveman text compression settings. Only honored when the
12
19
  * session is running with ctx_reduce_enabled=false — caller is
@@ -1 +1 @@
1
- {"version":3,"file":"heuristic-cleanup.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/heuristic-cleanup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAQ5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAEnE,OAAO,EAAuB,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEnF,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAe7D,wBAAgB,qBAAqB,CACjC,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,eAAe,EACnB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,EAC/B,iBAAiB,EAAE,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,EAC3C,MAAM,EAAE;IACJ,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;OAIG;IACH,OAAO,CAAC,EAAE,oBAAoB,CAAC;CAClC,EACD,aAAa,CAAC,EAAE,QAAQ,EAAE,GAC3B;IACC,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;CAC9B,CA8KA"}
1
+ {"version":3,"file":"heuristic-cleanup.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/heuristic-cleanup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAY5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAEnE,OAAO,EAAuB,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGnF,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAe7D,wBAAgB,qBAAqB,CACjC,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,eAAe,EACnB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,EAC/B,iBAAiB,EAAE,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,EAC3C,MAAM,EAAE;IACJ,aAAa,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,SAAS,CAAC,EAAE;QACR,uBAAuB,EAAE,MAAM,CAAC;QAChC,aAAa,EAAE,MAAM,CAAC;KACzB,CAAC;IACF;;;;OAIG;IACH,OAAO,CAAC,EAAE,oBAAoB,CAAC;CAClC,EACD,aAAa,CAAC,EAAE,QAAQ,EAAE,GAC3B;IACC,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;CAC9B,CAwMA"}
@@ -1,13 +1,12 @@
1
1
  import { getOrCreateSessionMeta } from "../../features/magic-context/storage-meta";
2
2
  import type { PluginContext } from "../../plugin/types";
3
+ import { type Channel1State } from "./ctx-reduce-nudge";
3
4
  export type LiveModelBySession = Map<string, {
4
5
  providerID: string;
5
6
  modelID: string;
6
7
  }>;
7
8
  export type VariantBySession = Map<string, string | undefined>;
8
9
  export type AgentBySession = Map<string, string>;
9
- export type RecentReduceBySession = Map<string, number>;
10
- export type ToolUsageSinceUserTurn = Map<string, number>;
11
10
  /**
12
11
  * Cache-busting signal sets — replaces the old monolithic `flushedSessions`.
13
12
  *
@@ -84,8 +83,6 @@ export declare function getLiveNotificationParams(sessionId: string, liveModelBy
84
83
  };
85
84
  export declare function createChatMessageHook(args: {
86
85
  db: Parameters<typeof getOrCreateSessionMeta>[0];
87
- toolUsageSinceUserTurn: ToolUsageSinceUserTurn;
88
- recentReduceBySession: RecentReduceBySession;
89
86
  liveModelBySession: LiveModelBySession;
90
87
  variantBySession: VariantBySession;
91
88
  agentBySession: AgentBySession;
@@ -133,8 +130,6 @@ export declare function createEventHook(args: {
133
130
  * for the full doc-comment.
134
131
  */
135
132
  sessionDirectoryBySession: Map<string, string>;
136
- recentReduceBySession: RecentReduceBySession;
137
- toolUsageSinceUserTurn: ToolUsageSinceUserTurn;
138
133
  /** All signal sets are cleaned on `session.deleted` to prevent leaks. */
139
134
  historyRefreshSessions: HistoryRefreshSessions;
140
135
  deferredHistoryRefreshSessions: DeferredHistoryRefreshSessions;
@@ -162,7 +157,6 @@ export declare function createCommandExecuteBeforeHook(commandHandler: {
162
157
  }): (input: unknown, output: unknown) => Promise<unknown>;
163
158
  export declare function createToolExecuteAfterHook(args: {
164
159
  db: Parameters<typeof getOrCreateSessionMeta>[0];
165
- recentReduceBySession: RecentReduceBySession;
166
- toolUsageSinceUserTurn: ToolUsageSinceUserTurn;
167
- }): (input: unknown) => Promise<void>;
160
+ channel1StateBySession: Map<string, Channel1State>;
161
+ }): (input: unknown, output?: unknown) => Promise<void>;
168
162
  //# sourceMappingURL=hook-handlers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hook-handlers.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/hook-handlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hook-handlers.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/hook-handlers.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,8 @@ import type { LiveSessionState } from "./live-session-state";
8
8
  export interface MagicContextDeps {
9
9
  client: PluginContext["client"];
10
10
  directory: string;
11
+ /** Live HTTP listener URL for the Channel 2 ceiling nudge (#28202 workaround). */
12
+ serverUrl?: string;
11
13
  tagger: Tagger;
12
14
  scheduler: Scheduler;
13
15
  onSessionCacheInvalidated?: (sessionId: string) => void;
@@ -16,11 +18,7 @@ export interface MagicContextDeps {
16
18
  config: {
17
19
  protected_tags: number;
18
20
  ctx_reduce_enabled?: boolean;
19
- nudge_interval_tokens?: number;
20
- auto_drop_tool_age?: number;
21
- drop_tool_structure?: boolean;
22
21
  clear_reasoning_age?: number;
23
- iteration_nudge_threshold?: number;
24
22
  execute_threshold_percentage?: number | {
25
23
  default: number;
26
24
  [modelKey: string]: number;
@@ -105,6 +103,6 @@ export declare function createMagicContextHook(deps: MagicContextDeps): {
105
103
  };
106
104
  }) => Promise<void>;
107
105
  "command.execute.before": (input: unknown, output: unknown) => Promise<unknown>;
108
- "tool.execute.after": (input: unknown) => Promise<void>;
106
+ "tool.execute.after": (input: unknown, output?: unknown) => Promise<void>;
109
107
  } | null;
110
108
  //# sourceMappingURL=hook.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/hook.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/hook.ts"],"names":[],"mappings":"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"}
@@ -64,6 +64,24 @@ export interface M0SnapshotMarkers {
64
64
  materializedAt: number;
65
65
  sessionFactsVersion: number;
66
66
  upgradeState: string | null;
67
+ systemHash: string;
68
+ toolSetHash: string;
69
+ modelKey: string;
70
+ }
71
+ /**
72
+ * Runtime cache-eviction signals threaded into the materialization decision.
73
+ * These are NOT derived from durable DB state like the content markers — they
74
+ * come from the current flight (system-prompt hash, tool-set fingerprint,
75
+ * provider/model key) plus the TTL idle window.
76
+ */
77
+ export interface M0HardSignals {
78
+ systemHash: string;
79
+ toolSetHash: string;
80
+ modelKey: string;
81
+ /** True when the provider cache TTL has elapsed since lastResponseTime. */
82
+ cacheExpired: boolean;
83
+ /** Epoch ms of the last completed assistant response (end-of-turn). */
84
+ lastResponseTime: number;
67
85
  }
68
86
  export interface M0M1State {
69
87
  sessionId: string;
@@ -80,6 +98,9 @@ export interface M0M1State {
80
98
  cachedM0MaterializedAt: number | null;
81
99
  cachedM0SessionFactsVersion: number | null;
82
100
  cachedM0UpgradeState: string | null;
101
+ cachedM0SystemHash: string | null;
102
+ cachedM0ToolSetHash: string | null;
103
+ cachedM0ModelKey: string | null;
83
104
  snapshotMarkers?: M0SnapshotMarkers | null;
84
105
  }
85
106
  export interface M0M1RenderOptions {
@@ -94,6 +115,8 @@ export interface M0M1RenderOptions {
94
115
  userProfileBudgetTokens?: number;
95
116
  keyFiles?: KeyFilesConfigForRender;
96
117
  isCacheBustingPass?: boolean;
118
+ /** Provider-side cache-eviction signals for HARD-bust detection. */
119
+ hardSignals?: M0HardSignals;
97
120
  preRenderedKeyFilesBlock?: string | null;
98
121
  beforePhase3ForTest?: () => void;
99
122
  }
@@ -136,13 +159,31 @@ export declare function readCurrentM0SnapshotMarkers(args: {
136
159
  sessionId: string;
137
160
  projectPath?: string;
138
161
  projectDirectory?: string;
162
+ hardSignals?: M0HardSignals;
139
163
  }): M0SnapshotMarkers;
164
+ /**
165
+ * The materialization decision, organized around the bust taxonomy:
166
+ *
167
+ * SOFT+ — defer pass, nothing new: replay m[0] AND m[1] byte-identical.
168
+ * SOFT — exec / deferred-consume pass: m[1] re-renders (new compartments,
169
+ * new memories, new user-profile ride the m[1] delta), m[0] stays.
170
+ * HARD — the provider cache is already dead (idle>TTL, model/system/tools
171
+ * changed) OR a genuine m[0] *content* marker changed: fold m[1] into
172
+ * m[0], re-run decay, reset m[1].
173
+ *
174
+ * `mustMaterialize` returns true ONLY for HARD. New compartments and additive
175
+ * user-profile/memory changes are deliberately NOT triggers — they are m[1]
176
+ * deltas (see renderM1) and must never mutate the m[0] baseline. That is the
177
+ * whole point of the m[0]=frozen-prefix / m[1]=volatile-delta split: a routine
178
+ * historian publish must keep the Anthropic prompt-cache prefix intact.
179
+ */
140
180
  export declare function mustMaterialize(args: {
141
181
  db: Database;
142
182
  sessionId: string;
143
183
  state: M0M1State;
144
184
  projectPath?: string;
145
185
  projectDirectory?: string;
186
+ hardSignals?: M0HardSignals;
146
187
  }): MaterializeDecision;
147
188
  export interface TrimMemoriesResultV2 {
148
189
  selected: Memory[];
@@ -1 +1 @@
1
- {"version":3,"file":"inject-compartments.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/inject-compartments.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inject-compartments.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/inject-compartments.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@
8
8
  * transform pipeline (i.e. inside `runPostTransformPhase`, not inside
9
9
  * `tagMessages`). By that point:
10
10
  * - queued user `ctx_reduce` ops have been applied
11
- * - heuristic cleanup (auto_drop_tool_age, clear_reasoning_age) ran
11
+ * - heuristic cleanup (emergency tiered drop, clear_reasoning_age) ran
12
12
  * - sentinel/replay logic neutralized previously-stripped parts
13
13
  * So if a `ctx_note` read is still a real, non-sentinel part in the
14
14
  * messages array we're about to send, the agent will actually see it.
@@ -0,0 +1,132 @@
1
+ import type { Database } from "../../shared/sqlite";
2
+ export type BoundaryMode = "trigger" | "incremental-runner" | "transform-force" | "manual-full-recomp" | "manual-partial-recomp" | "pi-trigger" | "pi-runner";
3
+ export interface BoundaryUsage {
4
+ percentage: number;
5
+ inputTokens: number;
6
+ }
7
+ export interface ResolvedBoundaryContext {
8
+ sessionId: string;
9
+ mode: BoundaryMode;
10
+ contextLimit: number;
11
+ executeThresholdPercentage: number;
12
+ triggerBudget: number;
13
+ usage: BoundaryUsage | null;
14
+ usageSource: "live" | "persisted" | "provisional-zero" | "manual-none";
15
+ lastCompartmentEndOrdinal: number;
16
+ priorBoundaryOrdinal: number;
17
+ protectedTailPolicyVersion: number;
18
+ migrationFloorActive: boolean;
19
+ emergencyTailScale?: 0.5 | 0.25;
20
+ providerShapeVersion: "opencode-v1" | "pi-folded-v1";
21
+ cacheNamespace: string;
22
+ createdAt?: number;
23
+ /**
24
+ * Durable per-message token totals (sum of the message's active tag
25
+ * token_counts), keyed by real message id. When present, the boundary's
26
+ * token index reads these instead of re-tokenizing the raw session — the
27
+ * restart-durable fast path. A message missing here (or with a NULL-count
28
+ * tag) falls back to live tokenization. Built once in resolveBoundaryContext
29
+ * from the tag store; omitted (→ all-live) when the caller has no tag store.
30
+ */
31
+ storedTokenTotals?: Map<string, number>;
32
+ }
33
+ export interface ProtectedTailBoundarySnapshot {
34
+ sessionId: string;
35
+ mode: BoundaryMode;
36
+ offset: number;
37
+ offsetMessageId: string | null;
38
+ protectedTailStart: number;
39
+ protectedTailStartMessageId: string | null;
40
+ eligibleEndOrdinal: number;
41
+ eligibleEndMessageId: string | null;
42
+ rawMessageCountAtTrigger: number;
43
+ rawLastMessageIdAtTrigger: string | null;
44
+ N: number;
45
+ usagePercentage: number;
46
+ usageInputTokens: number;
47
+ usageSource: ResolvedBoundaryContext["usageSource"];
48
+ contextLimit: number;
49
+ executeThresholdPercentage: number;
50
+ triggerBudget: number;
51
+ priorBoundaryOrdinal: number;
52
+ migrationFloorActive: boolean;
53
+ emergencyTailScale?: 0.5 | 0.25;
54
+ providerShapeVersion: "opencode-v1" | "pi-folded-v1";
55
+ cacheNamespace: string;
56
+ createdAt: number;
57
+ rawRangeFingerprint: string;
58
+ trueRawEligibleTokens: number;
59
+ oversizeAtomicUnit: boolean;
60
+ boundaryReason: string;
61
+ }
62
+ export interface ProtectedTailTokenTarget {
63
+ usable: number;
64
+ rawN: number;
65
+ floorN: number;
66
+ ceilingN: number;
67
+ effectiveFloor: number;
68
+ N: number;
69
+ headroom: number;
70
+ triggerBudget: number;
71
+ reserve: number;
72
+ }
73
+ export interface RawHistoryEligibility {
74
+ lastCompartmentEnd: number;
75
+ offset: number;
76
+ rawMessageCount: number;
77
+ hasRawBeyondLastCompartment: boolean;
78
+ }
79
+ export interface ProactiveTriggerInfo {
80
+ boundary: ProtectedTailBoundarySnapshot;
81
+ hasProtectedEligibleHead: boolean;
82
+ trueRawEligibleTokens: number;
83
+ tcTokenEstimate: number;
84
+ messageCount: number;
85
+ commitClusterCount: number;
86
+ isMeaningful: boolean;
87
+ }
88
+ export interface BoundarySnapshotValidationResult {
89
+ ok: boolean;
90
+ reason?: "stale_snapshot" | "model_or_limit_changed";
91
+ detail?: string;
92
+ }
93
+ export declare const RECOVERY_NO_HEAD_LIMIT = 2;
94
+ /** A tiny complete head is still worth summarizing at force pressure; below this, wait for a real arc/user turn. */
95
+ export declare const MIN_FORCE_ELIGIBLE_TOKENS_CAP = 1000;
96
+ export declare function deriveMinForceEligibleTokens(scaledN: number): number;
97
+ export declare function deriveProtectedTailTokenTarget(args: {
98
+ contextLimit: number;
99
+ executeThresholdPercentage: number;
100
+ usagePercentage: number;
101
+ triggerBudget?: number;
102
+ }): ProtectedTailTokenTarget;
103
+ export declare function nonEmergencyPerRunCap(usable: number, N: number): number;
104
+ export declare function force80PerRunCap(usable: number, N: number): number;
105
+ export declare function force95PerRunCap(usable: number, N: number): number;
106
+ export declare function selectPerRunCap(snapshot: Pick<ProtectedTailBoundarySnapshot, "usagePercentage" | "N" | "contextLimit" | "executeThresholdPercentage">): number;
107
+ export declare function resolveProtectedTailBoundary(ctx: ResolvedBoundaryContext): ProtectedTailBoundarySnapshot;
108
+ export declare function resolveBoundaryContext(args: {
109
+ db: Database;
110
+ sessionId: string;
111
+ mode: BoundaryMode;
112
+ contextLimit: number;
113
+ executeThresholdPercentage: number;
114
+ usage?: BoundaryUsage | null;
115
+ usageSource?: ResolvedBoundaryContext["usageSource"];
116
+ emergencyTailScale?: 0.5 | 0.25;
117
+ providerShapeVersion?: "opencode-v1" | "pi-folded-v1";
118
+ cacheNamespace?: string;
119
+ }): ResolvedBoundaryContext;
120
+ export declare function resolveOpenCodeProtectedTailBoundary(args: Parameters<typeof resolveBoundaryContext>[0]): ProtectedTailBoundarySnapshot;
121
+ export declare function getRawHistoryEligibility(db: Database, sessionId: string): RawHistoryEligibility;
122
+ export declare function hasProtectedEligibleHead(snapshot: ProtectedTailBoundarySnapshot): boolean;
123
+ export declare function hasRunnableCompartmentWindow(snapshot: ProtectedTailBoundarySnapshot): boolean;
124
+ export declare function validateBoundarySnapshot(args: {
125
+ db: Database;
126
+ snapshot: ProtectedTailBoundarySnapshot;
127
+ currentContextLimit?: number;
128
+ }): BoundarySnapshotValidationResult;
129
+ export declare function recordHighPressureNoEligibleHead(db: Database, snapshot: ProtectedTailBoundarySnapshot): number;
130
+ export declare function resetHighPressureNoEligibleHead(db: Database, sessionId: string): void;
131
+ export declare function createDefaultBoundarySnapshotForTests(sessionId: string): ProtectedTailBoundarySnapshot;
132
+ //# sourceMappingURL=protected-tail-boundary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protected-tail-boundary.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/protected-tail-boundary.ts"],"names":[],"mappings":"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"}
@@ -78,6 +78,60 @@ export interface SessionChunk {
78
78
  }
79
79
  export declare function withRawSessionMessageCache<T>(fn: () => T): T;
80
80
  export declare function readRawSessionMessages(sessionId: string): RawMessage[];
81
+ /**
82
+ * Prime the active raw-message cache with a TAIL-ONLY read (only messages
83
+ * at/after the last compartment boundary), so subsequent
84
+ * `readRawSessionMessages(sessionId)` calls in this scope reuse it instead of
85
+ * reading the whole session.
86
+ *
87
+ * This is the O(tail) path: the compartment-trigger boundary resolution is
88
+ * offset-forward only (its candidate / suffix / range / head-cap / chunk-scan
89
+ * reads never cross below `baseOrdinal+1`), and the absolute message count it
90
+ * needs is recovered from the tail reader (`baseOrdinal + tail`), NOT from
91
+ * counting pre-boundary rows. On a months-long session the full read grows
92
+ * O(session); this stays flat at the tail size.
93
+ *
94
+ * The cached array carries ABSOLUTE ordinals (`baseOrdinal+1 …`) so every
95
+ * downstream absolute-ordinal computation matches the full read; the true total
96
+ * is stashed in the parallel absolute-count cache for `.length`-style consumers.
97
+ *
98
+ * No-op (returns false) when a provider is registered (Pi: in-memory branch read
99
+ * is already cheap and authoritative), no OpenCode DB exists, the cache is
100
+ * already populated, or no usable boundary anchor exists (e.g. no compartments,
101
+ * or the anchor message was deleted) — in which case the caller falls through to
102
+ * the full read, which is correct (everything is eligible / nothing to skip).
103
+ */
104
+ export declare function primeTailRawMessageCache(args: {
105
+ sessionId: string;
106
+ lastCompartmentEnd: number;
107
+ anchorMessageId: string | null;
108
+ }): boolean;
109
+ /**
110
+ * Absolute session message count for the active scope. Returns the tail-prime's
111
+ * stashed absolute count when a tail slice is cached; otherwise null, signalling
112
+ * callers to use `readRawSessionMessages(sessionId).length` (whole-session
113
+ * array) as before.
114
+ */
115
+ export declare function getCachedAbsoluteMessageCount(sessionId: string): number | null;
116
+ /**
117
+ * Prime the active raw-message cache with an IN-MEMORY tail built from the
118
+ * transform's `args.messages` — no opencode.db read at all. This is the hot-path
119
+ * goal: the transform already receives the post-marker tail (the eligible
120
+ * window) as parsed objects, so the boundary resolver can consume it directly.
121
+ *
122
+ * The caller supplies the already-converted absolute-ordinal `RawMessage[]` (via
123
+ * `buildInMemoryTailRawMessages`) plus its absolute count. Same scope/lifecycle
124
+ * rules as the other prime helpers: only inside a `withRawSessionMessageCache`
125
+ * scope, never shadows a registered provider (Pi), and is a no-op if the cache is
126
+ * already populated for the session.
127
+ *
128
+ * Returns true when it primed the cache.
129
+ */
130
+ export declare function primeInMemoryTailRawMessageCache(args: {
131
+ sessionId: string;
132
+ messages: RawMessage[];
133
+ absoluteMessageCount: number;
134
+ }): boolean;
81
135
  export declare function readRawSessionMessageById(sessionId: string, messageId: string): RawMessage | null;
82
136
  export declare function getRawSessionMessageCount(sessionId: string): number;
83
137
  /**
@@ -102,6 +156,7 @@ export interface RawSessionTagKeys {
102
156
  toolObservations: Map<string, Set<string>>;
103
157
  }
104
158
  export declare function getRawSessionTagKeysThrough(sessionId: string, upToMessageIndex: number): RawSessionTagKeys;
159
+ export declare function getLegacyProtectedTailStartOrdinal(sessionId: string): number;
105
160
  export declare function getProtectedTailStartOrdinal(sessionId: string): number;
106
161
  export declare function readSessionChunk(sessionId: string, tokenBudget: number, offset?: number, eligibleEndOrdinal?: number): SessionChunk;
107
162
  export declare function getRawSessionMessageIdsThrough(sessionId: string, endOrdinal: number): string[];
@@ -1 +1 @@
1
- {"version":3,"file":"read-session-chunk.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/read-session-chunk.ts"],"names":[],"mappings":"AAOA,OAAO,EAWH,KAAK,gBAAgB,EACxB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACH,KAAK,UAAU,EAGlB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAIhF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,kBAAkB;IAC/B,YAAY,IAAI,UAAU,EAAE,CAAC;IAC7B,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,UAAU,GAAG,IAAI,CAAC;IAC3D,qEAAqE;IACrE,eAAe,CAAC,EAAE,MAAM,MAAM,CAAC;CAClC;AAID;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB,GAAG,MAAM,IAAI,CAMjG;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EACpC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,kBAAkB,EAC5B,EAAE,EAAE,MAAM,CAAC,GACZ,CAAC,CAkBH;AAED,wFAAwF;AACxF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,MAAM,WAAW,YAAY;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,4GAA4G;IAC5G,kBAAkB,EAAE,MAAM,CAAC;IAC3B;;;;;;OAMG;IACH,cAAc,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACzD;AAED,wBAAgB,0BAA0B,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAa5D;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,EAAE,CAatE;AAED,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAUjG;AAcD,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAQnE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,iBAAiB;IAC9B,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;CAC9C;AAED,wBAAgB,2BAA2B,CACvC,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,MAAM,GACzB,iBAAiB,CA2DnB;AAID,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAWtE;AAED,wBAAgB,gBAAgB,CAC5B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,MAAM,GAAE,MAAU,EAClB,kBAAkB,CAAC,EAAE,MAAM,GAC5B,YAAY,CA+Ld;AAED,wBAAgB,8BAA8B,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAK9F"}
1
+ {"version":3,"file":"read-session-chunk.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/read-session-chunk.ts"],"names":[],"mappings":"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"}