@cortexkit/opencode-magic-context 0.22.5 → 0.23.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agents/magic-context-prompt.d.ts +1 -1
- package/dist/agents/magic-context-prompt.d.ts.map +1 -1
- package/dist/agents/permissions.d.ts +4 -4
- package/dist/agents/permissions.d.ts.map +1 -1
- package/dist/config/project-security.d.ts +5 -0
- package/dist/config/project-security.d.ts.map +1 -1
- package/dist/config/schema/magic-context.d.ts +0 -13
- package/dist/config/schema/magic-context.d.ts.map +1 -1
- package/dist/features/magic-context/dreamer/task-prompts.d.ts +1 -1
- package/dist/features/magic-context/dreamer/task-prompts.d.ts.map +1 -1
- package/dist/features/magic-context/memory/constants.d.ts +7 -0
- package/dist/features/magic-context/memory/constants.d.ts.map +1 -1
- package/dist/features/magic-context/migrations.d.ts.map +1 -1
- package/dist/features/magic-context/storage-db.d.ts +1 -1
- package/dist/features/magic-context/storage-db.d.ts.map +1 -1
- package/dist/features/magic-context/storage-meta-persisted.d.ts +83 -15
- package/dist/features/magic-context/storage-meta-persisted.d.ts.map +1 -1
- package/dist/features/magic-context/storage-meta-shared.d.ts +9 -2
- package/dist/features/magic-context/storage-meta-shared.d.ts.map +1 -1
- package/dist/features/magic-context/storage-meta.d.ts +1 -1
- package/dist/features/magic-context/storage-meta.d.ts.map +1 -1
- package/dist/features/magic-context/storage-notes.d.ts.map +1 -1
- package/dist/features/magic-context/storage-tags.d.ts +118 -1
- package/dist/features/magic-context/storage-tags.d.ts.map +1 -1
- package/dist/features/magic-context/storage.d.ts +2 -2
- package/dist/features/magic-context/storage.d.ts.map +1 -1
- package/dist/features/magic-context/tagger.d.ts +12 -2
- package/dist/features/magic-context/tagger.d.ts.map +1 -1
- package/dist/features/magic-context/tool-definition-tokens.d.ts +0 -21
- package/dist/features/magic-context/tool-definition-tokens.d.ts.map +1 -1
- package/dist/features/magic-context/tool-owner-backfill.d.ts +2 -1
- package/dist/features/magic-context/tool-owner-backfill.d.ts.map +1 -1
- package/dist/features/magic-context/types.d.ts +8 -0
- package/dist/features/magic-context/types.d.ts.map +1 -1
- package/dist/hooks/magic-context/apply-operations.d.ts.map +1 -1
- package/dist/hooks/magic-context/auto-search-runner.d.ts.map +1 -1
- package/dist/hooks/magic-context/channel2-delivery.d.ts +22 -0
- package/dist/hooks/magic-context/channel2-delivery.d.ts.map +1 -0
- package/dist/hooks/magic-context/command-handler.d.ts +0 -1
- package/dist/hooks/magic-context/command-handler.d.ts.map +1 -1
- package/dist/hooks/magic-context/compartment-runner-incremental.d.ts.map +1 -1
- package/dist/hooks/magic-context/compartment-runner-partial-recomp.d.ts.map +1 -1
- package/dist/hooks/magic-context/compartment-runner-recomp.d.ts.map +1 -1
- package/dist/hooks/magic-context/compartment-runner-types.d.ts +5 -0
- package/dist/hooks/magic-context/compartment-runner-types.d.ts.map +1 -1
- package/dist/hooks/magic-context/compartment-runner.d.ts.map +1 -1
- package/dist/hooks/magic-context/compartment-trigger.d.ts +47 -2
- package/dist/hooks/magic-context/compartment-trigger.d.ts.map +1 -1
- package/dist/hooks/magic-context/ctx-reduce-availability.d.ts +18 -0
- package/dist/hooks/magic-context/ctx-reduce-availability.d.ts.map +1 -0
- package/dist/hooks/magic-context/ctx-reduce-nudge.d.ts +117 -0
- package/dist/hooks/magic-context/ctx-reduce-nudge.d.ts.map +1 -0
- package/dist/hooks/magic-context/emergency-drop.d.ts +86 -0
- package/dist/hooks/magic-context/emergency-drop.d.ts.map +1 -0
- package/dist/hooks/magic-context/event-handler.d.ts +6 -4
- package/dist/hooks/magic-context/event-handler.d.ts.map +1 -1
- package/dist/hooks/magic-context/execute-flush.d.ts.map +1 -1
- package/dist/hooks/magic-context/execute-status.d.ts +1 -1
- package/dist/hooks/magic-context/execute-status.d.ts.map +1 -1
- package/dist/hooks/magic-context/heuristic-cleanup.d.ts +10 -3
- package/dist/hooks/magic-context/heuristic-cleanup.d.ts.map +1 -1
- package/dist/hooks/magic-context/hook-handlers.d.ts +3 -9
- package/dist/hooks/magic-context/hook-handlers.d.ts.map +1 -1
- package/dist/hooks/magic-context/hook.d.ts +3 -5
- package/dist/hooks/magic-context/hook.d.ts.map +1 -1
- package/dist/hooks/magic-context/inject-compartments.d.ts +0 -2
- package/dist/hooks/magic-context/inject-compartments.d.ts.map +1 -1
- package/dist/hooks/magic-context/issue-135-wire-fixtures.d.ts +8 -0
- package/dist/hooks/magic-context/issue-135-wire-fixtures.d.ts.map +1 -0
- package/dist/hooks/magic-context/note-visibility.d.ts +1 -1
- package/dist/hooks/magic-context/openai-compat-adjacency.d.ts +38 -0
- package/dist/hooks/magic-context/openai-compat-adjacency.d.ts.map +1 -0
- package/dist/hooks/magic-context/protected-tail-boundary.d.ts +132 -0
- package/dist/hooks/magic-context/protected-tail-boundary.d.ts.map +1 -0
- package/dist/hooks/magic-context/read-session-chunk.d.ts +55 -0
- package/dist/hooks/magic-context/read-session-chunk.d.ts.map +1 -1
- package/dist/hooks/magic-context/read-session-formatting.d.ts.map +1 -1
- package/dist/hooks/magic-context/read-session-raw.d.ts +91 -0
- package/dist/hooks/magic-context/read-session-raw.d.ts.map +1 -1
- package/dist/hooks/magic-context/read-session-true-raw-tokens.d.ts +70 -0
- package/dist/hooks/magic-context/read-session-true-raw-tokens.d.ts.map +1 -0
- package/dist/hooks/magic-context/send-session-notification.d.ts +2 -1
- package/dist/hooks/magic-context/send-session-notification.d.ts.map +1 -1
- package/dist/hooks/magic-context/system-prompt-hash.d.ts +0 -1
- package/dist/hooks/magic-context/system-prompt-hash.d.ts.map +1 -1
- package/dist/hooks/magic-context/tag-messages.d.ts +3 -0
- package/dist/hooks/magic-context/tag-messages.d.ts.map +1 -1
- package/dist/hooks/magic-context/todo-view.d.ts +1 -1
- package/dist/hooks/magic-context/tool-drop-target.d.ts +9 -0
- package/dist/hooks/magic-context/tool-drop-target.d.ts.map +1 -1
- package/dist/hooks/magic-context/transform-compartment-phase.d.ts +15 -0
- package/dist/hooks/magic-context/transform-compartment-phase.d.ts.map +1 -1
- package/dist/hooks/magic-context/transform-postprocess-phase.d.ts +7 -10
- package/dist/hooks/magic-context/transform-postprocess-phase.d.ts.map +1 -1
- package/dist/hooks/magic-context/transform.d.ts +14 -17
- package/dist/hooks/magic-context/transform.d.ts.map +1 -1
- package/dist/hooks/magic-context/upgrade-reminder.d.ts +2 -1
- package/dist/hooks/magic-context/upgrade-reminder.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5215 -1140
- package/dist/plugin/conflict-warning-hook.d.ts.map +1 -1
- package/dist/plugin/hooks/create-session-hooks.d.ts +1 -1
- package/dist/plugin/hooks/create-session-hooks.d.ts.map +1 -1
- package/dist/plugin/rpc-handlers.d.ts.map +1 -1
- package/dist/plugin/tool-registry.d.ts.map +1 -1
- package/dist/shared/announcement.d.ts +4 -6
- package/dist/shared/announcement.d.ts.map +1 -1
- package/dist/shared/live-server-client.d.ts +50 -0
- package/dist/shared/live-server-client.d.ts.map +1 -0
- package/dist/shared/prompt-context.d.ts +31 -0
- package/dist/shared/prompt-context.d.ts.map +1 -0
- package/dist/shared/rpc-types.d.ts +0 -3
- package/dist/shared/rpc-types.d.ts.map +1 -1
- package/dist/shared/safe-notification-target.d.ts +23 -0
- package/dist/shared/safe-notification-target.d.ts.map +1 -0
- package/dist/shared/tag-transcript.d.ts.map +1 -1
- package/dist/shared/transcript-opencode.d.ts.map +1 -1
- package/dist/shared/transcript.d.ts +15 -1
- package/dist/shared/transcript.d.ts.map +1 -1
- package/dist/tools/ctx-expand/constants.d.ts +1 -1
- package/dist/tools/ctx-expand/constants.d.ts.map +1 -1
- package/dist/tools/ctx-expand/tools.d.ts.map +1 -1
- package/dist/tools/ctx-memory/constants.d.ts +1 -1
- package/dist/tools/ctx-memory/constants.d.ts.map +1 -1
- package/dist/tools/ctx-memory/tools.d.ts.map +1 -1
- package/dist/tools/ctx-memory/types.d.ts +7 -3
- package/dist/tools/ctx-memory/types.d.ts.map +1 -1
- package/dist/tools/ctx-note/constants.d.ts +1 -1
- package/dist/tools/ctx-note/constants.d.ts.map +1 -1
- package/dist/tools/ctx-note/tools.d.ts.map +1 -1
- package/dist/tools/ctx-note/types.d.ts +4 -0
- package/dist/tools/ctx-note/types.d.ts.map +1 -1
- package/dist/tools/ctx-search/constants.d.ts +1 -1
- package/dist/tools/ctx-search/constants.d.ts.map +1 -1
- package/dist/tui/data/context-db.d.ts.map +1 -1
- package/package.json +2 -1
- package/src/shared/announcement.test.ts +18 -0
- package/src/shared/announcement.ts +35 -20
- package/src/shared/live-server-client.ts +152 -0
- package/src/shared/prompt-context.ts +135 -0
- package/src/shared/rpc-types.ts +0 -3
- package/src/shared/safe-notification-target.test.ts +97 -0
- package/src/shared/safe-notification-target.ts +102 -0
- package/src/shared/tag-transcript.test.ts +34 -8
- package/src/shared/tag-transcript.ts +110 -8
- package/src/shared/transcript-opencode.ts +15 -5
- package/src/shared/transcript.ts +20 -2
- package/src/tui/data/context-db.ts +0 -3
- package/src/tui/index.tsx +2 -5
- package/src/tui/slots/sidebar-content.tsx +1 -26
- package/dist/hooks/magic-context/apply-context-nudge.d.ts +0 -5
- package/dist/hooks/magic-context/apply-context-nudge.d.ts.map +0 -1
- package/dist/hooks/magic-context/nudge-bands.d.ts +0 -6
- package/dist/hooks/magic-context/nudge-bands.d.ts.map +0 -1
- package/dist/hooks/magic-context/nudge-injection.d.ts +0 -7
- package/dist/hooks/magic-context/nudge-injection.d.ts.map +0 -1
- package/dist/hooks/magic-context/nudge-placement-store.d.ts +0 -15
- package/dist/hooks/magic-context/nudge-placement-store.d.ts.map +0 -1
- package/dist/hooks/magic-context/nudger.d.ts +0 -21
- 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;
|
|
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":"
|
|
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,
|
|
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":"
|
|
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
|
-
|
|
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;
|
|
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
|
-
|
|
166
|
-
|
|
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":"
|
|
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;
|
|
@@ -101,6 +99,6 @@ export declare function createMagicContextHook(deps: MagicContextDeps): {
|
|
|
101
99
|
};
|
|
102
100
|
}) => Promise<void>;
|
|
103
101
|
"command.execute.before": (input: unknown, output: unknown) => Promise<unknown>;
|
|
104
|
-
"tool.execute.after": (input: unknown) => Promise<void>;
|
|
102
|
+
"tool.execute.after": (input: unknown, output?: unknown) => Promise<void>;
|
|
105
103
|
} | null;
|
|
106
104
|
//# sourceMappingURL=hook.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/hook.ts"],"names":[],"mappings":"AAOA,OAAO,
|
|
1
|
+
{"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/hook.ts"],"names":[],"mappings":"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"}
|
|
@@ -65,7 +65,6 @@ export interface M0SnapshotMarkers {
|
|
|
65
65
|
sessionFactsVersion: number;
|
|
66
66
|
upgradeState: string | null;
|
|
67
67
|
systemHash: string;
|
|
68
|
-
toolSetHash: string;
|
|
69
68
|
modelKey: string;
|
|
70
69
|
}
|
|
71
70
|
/**
|
|
@@ -76,7 +75,6 @@ export interface M0SnapshotMarkers {
|
|
|
76
75
|
*/
|
|
77
76
|
export interface M0HardSignals {
|
|
78
77
|
systemHash: string;
|
|
79
|
-
toolSetHash: string;
|
|
80
78
|
modelKey: string;
|
|
81
79
|
/** True when the provider cache TTL has elapsed since lastResponseTime. */
|
|
82
80
|
cacheExpired: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inject-compartments.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/inject-compartments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAEH,KAAK,WAAW,EAMhB,KAAK,WAAW,EACnB,MAAM,kDAAkD,CAAC;AAY1D,OAAO,KAAK,EAAE,MAAM,EAAkB,MAAM,2CAA2C,CAAC;AAWxF,OAAO,EAEH,KAAK,UAAU,EAClB,MAAM,8DAA8D,CAAC;AAGtE,OAAO,KAAK,EAAE,QAAQ,EAAkC,MAAM,qBAAqB,CAAC;AAEpF,OAAO,EAAsB,KAAK,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAGrF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGlD,MAAM,WAAW,4BAA4B;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,qBAAqB,EAAE,MAAM,CAAC;IAC9B,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,gBAAgB,EAAE,MAAM,CAAC;IACzB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;CAC1B;AAuBD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAE3D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAkBvF;AAED,MAAM,WAAW,0BAA0B;IACvC,QAAQ,EAAE,OAAO,CAAC;IAClB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,sBAAsB,EAAE,MAAM,CAAC;CAClC;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CA6BnE;AAmBD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAChC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAAE,EAClB,YAAY,EAAE,MAAM,GACrB,MAAM,EAAE,CA4CV;AAED,wBAAgB,2BAA2B,CACvC,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,WAAW,EAAE,EACvB,cAAc,EAAE,OAAO,EACvB,WAAW,CAAC,EAAE,MAAM,EACpB,qBAAqB,CAAC,EAAE,MAAM,EAC9B,iBAAiB,CAAC,EAAE,OAAO,GAC5B,4BAA4B,GAAG,IAAI,CAiPrC;AAgCD,wBAAgB,0BAA0B,CACtC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,WAAW,EAAE,EACvB,QAAQ,EAAE,4BAA4B,GACvC,0BAA0B,CAgC5B;AAiBD,MAAM,WAAW,iBAAiB;IAC9B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,yBAAyB,EAAE,MAAM,CAAC;IAClC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAM5B,UAAU,EAAE,MAAM,CAAC;IACnB,
|
|
1
|
+
{"version":3,"file":"inject-compartments.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/inject-compartments.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Captured openai-compat wire fixtures from issue #135 pinning harness.
|
|
3
|
+
* Source: scripts/experiments/issue-135-pinning-harness.ts (case 1c).
|
|
4
|
+
*/
|
|
5
|
+
import type { OpenAiCompatWireMessage } from "./openai-compat-adjacency";
|
|
6
|
+
/** Known FAIL: [dropped] assistant between tool_calls and tool result. */
|
|
7
|
+
export declare const ISSUE_135_ORPHAN_WIRE: OpenAiCompatWireMessage[];
|
|
8
|
+
//# sourceMappingURL=issue-135-wire-fixtures.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issue-135-wire-fixtures.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/issue-135-wire-fixtures.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEzE,0EAA0E;AAC1E,eAAO,MAAM,qBAAqB,EAAE,uBAAuB,EAe1D,CAAC"}
|
|
@@ -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 (
|
|
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,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAI-compatible chat adjacency invariant used by GitHub Copilot's wire format.
|
|
3
|
+
*
|
|
4
|
+
* Every assistant message with `tool_calls` must be immediately followed by
|
|
5
|
+
* `role: "tool"` messages whose `tool_call_id` values cover exactly the ids
|
|
6
|
+
* declared on that assistant message (order among tool messages may vary).
|
|
7
|
+
*
|
|
8
|
+
* Copilot re-translates this shape to Bedrock/Claude server-side; violating
|
|
9
|
+
* adjacency here reproduces issue #135 (`tool_use` without adjacent `tool_result`).
|
|
10
|
+
*/
|
|
11
|
+
export type OpenAiCompatWireMessage = {
|
|
12
|
+
role: string;
|
|
13
|
+
content?: string | null | unknown;
|
|
14
|
+
tool_calls?: Array<{
|
|
15
|
+
id: string;
|
|
16
|
+
type?: string;
|
|
17
|
+
function?: {
|
|
18
|
+
name: string;
|
|
19
|
+
arguments: string;
|
|
20
|
+
};
|
|
21
|
+
}>;
|
|
22
|
+
tool_call_id?: string;
|
|
23
|
+
};
|
|
24
|
+
export type AdjacencyViolation = {
|
|
25
|
+
index: number;
|
|
26
|
+
kind: "missing_tool_messages" | "orphan_tool_message" | "unmatched_tool_call_id";
|
|
27
|
+
assistantToolCallIds?: string[];
|
|
28
|
+
followingRoles?: string[];
|
|
29
|
+
toolCallId?: string;
|
|
30
|
+
detail: string;
|
|
31
|
+
};
|
|
32
|
+
export type AdjacencyResult = {
|
|
33
|
+
ok: boolean;
|
|
34
|
+
violations: AdjacencyViolation[];
|
|
35
|
+
};
|
|
36
|
+
export declare function assertOpenAiCompatAdjacency(messages: OpenAiCompatWireMessage[]): AdjacencyResult;
|
|
37
|
+
export declare function formatWireSlice(messages: OpenAiCompatWireMessage[], centerIndex: number, radius?: number): string;
|
|
38
|
+
//# sourceMappingURL=openai-compat-adjacency.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai-compat-adjacency.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/openai-compat-adjacency.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,MAAM,uBAAuB,GAAG;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC;IAClC,UAAU,CAAC,EAAE,KAAK,CAAC;QACf,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,CAAC;KAClD,CAAC,CAAC;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,uBAAuB,GAAG,qBAAqB,GAAG,wBAAwB,CAAC;IACjF,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC1B,EAAE,EAAE,OAAO,CAAC;IACZ,UAAU,EAAE,kBAAkB,EAAE,CAAC;CACpC,CAAC;AAEF,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,uBAAuB,EAAE,GAAG,eAAe,CAyFhG;AAED,wBAAgB,eAAe,CAC3B,QAAQ,EAAE,uBAAuB,EAAE,EACnC,WAAW,EAAE,MAAM,EACnB,MAAM,SAAI,GACX,MAAM,CAmBR"}
|
|
@@ -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":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAgBpD,MAAM,MAAM,YAAY,GAClB,SAAS,GACT,oBAAoB,GACpB,iBAAiB,GACjB,oBAAoB,GACpB,uBAAuB,GACvB,YAAY,GACZ,WAAW,CAAC;AAElB,MAAM,WAAW,aAAa;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,YAAY,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,0BAA0B,EAAE,MAAM,CAAC;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;IAC5B,WAAW,EAAE,MAAM,GAAG,WAAW,GAAG,kBAAkB,GAAG,aAAa,CAAC;IACvE,yBAAyB,EAAE,MAAM,CAAC;IAClC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,0BAA0B,EAAE,MAAM,CAAC;IACnC,oBAAoB,EAAE,OAAO,CAAC;IAC9B,kBAAkB,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC;IAChC,oBAAoB,EAAE,aAAa,GAAG,cAAc,CAAC;IACrD,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;OAOG;IACH,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,6BAA6B;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,2BAA2B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,wBAAwB,EAAE,MAAM,CAAC;IACjC,yBAAyB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,CAAC,EAAE,MAAM,CAAC;IACV,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,uBAAuB,CAAC,aAAa,CAAC,CAAC;IACpD,YAAY,EAAE,MAAM,CAAC;IACrB,0BAA0B,EAAE,MAAM,CAAC;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,kBAAkB,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC;IAChC,oBAAoB,EAAE,aAAa,GAAG,cAAc,CAAC;IACrD,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,wBAAwB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,CAAC,EAAE,MAAM,CAAC;IACV,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IAClC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,2BAA2B,EAAE,OAAO,CAAC;CACxC;AAED,MAAM,WAAW,oBAAoB;IACjC,QAAQ,EAAE,6BAA6B,CAAC;IACxC,wBAAwB,EAAE,OAAO,CAAC;IAClC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,gCAAgC;IAC7C,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,CAAC,EAAE,gBAAgB,GAAG,wBAAwB,CAAC;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAeD,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC,oHAAoH;AACpH,eAAO,MAAM,6BAA6B,OAAQ,CAAC;AAEnD,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEpE;AAWD,wBAAgB,8BAA8B,CAAC,IAAI,EAAE;IACjD,YAAY,EAAE,MAAM,CAAC;IACrB,0BAA0B,EAAE,MAAM,CAAC;IACnC,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B,GAAG,wBAAwB,CAqB3B;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAKvE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,wBAAgB,eAAe,CAC3B,QAAQ,EAAE,IAAI,CACV,6BAA6B,EAC7B,iBAAiB,GAAG,GAAG,GAAG,cAAc,GAAG,4BAA4B,CAC1E,GACF,MAAM,CAQR;AAsFD,wBAAgB,4BAA4B,CACxC,GAAG,EAAE,uBAAuB,GAC7B,6BAA6B,CAyN/B;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IACzC,EAAE,EAAE,QAAQ,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,YAAY,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,0BAA0B,EAAE,MAAM,CAAC;IACnC,KAAK,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7B,WAAW,CAAC,EAAE,uBAAuB,CAAC,aAAa,CAAC,CAAC;IACrD,kBAAkB,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC;IAChC,oBAAoB,CAAC,EAAE,aAAa,GAAG,cAAc,CAAC;IACtD,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B,GAAG,uBAAuB,CAuD1B;AAED,wBAAgB,oCAAoC,CAChD,IAAI,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC,CAAC,CAAC,GACnD,6BAA6B,CAE/B;AAED,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,qBAAqB,CAe/F;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,6BAA6B,GAAG,OAAO,CAEzF;AAED,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,6BAA6B,GAAG,OAAO,CAS7F;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAC3C,EAAE,EAAE,QAAQ,CAAC;IACb,QAAQ,EAAE,6BAA6B,CAAC;IACxC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAChC,GAAG,gCAAgC,CA0EnC;AAED,wBAAgB,gCAAgC,CAC5C,EAAE,EAAE,QAAQ,EACZ,QAAQ,EAAE,6BAA6B,GACxC,MAAM,CAGR;AAED,wBAAgB,+BAA+B,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAErF;AAED,wBAAgB,qCAAqC,CACjD,SAAS,EAAE,MAAM,GAClB,6BAA6B,CA8C/B"}
|
|
@@ -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[];
|