@cortexkit/opencode-magic-context 0.48.0 → 0.49.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.
- package/dist/auto-search-worker.js +3 -3
- package/dist/{conflict-warning-hook-w8cykrnf.js → conflict-warning-hook-kzx4dmk1.js} +7 -7
- package/dist/{context-m0cy262m.js → context-nj5f293n.js} +96 -43
- package/dist/{derive-budgets-sg0xsq7s.js → derive-budgets-qz5rrr08.js} +2 -2
- package/dist/embedding-backfill-aetxv1vt.js +21 -0
- package/dist/embedding-worker.js +4 -4
- package/dist/features/magic-context/git-commits/search-git-commits.d.ts +2 -0
- package/dist/features/magic-context/git-commits/search-git-commits.d.ts.map +1 -1
- package/dist/features/magic-context/message-index.d.ts.map +1 -1
- package/dist/features/magic-context/pi-content-decisions.d.ts +1 -1
- package/dist/features/magic-context/pi-content-decisions.d.ts.map +1 -1
- package/dist/features/magic-context/search-rerank.d.ts +35 -0
- package/dist/features/magic-context/search-rerank.d.ts.map +1 -0
- package/dist/features/magic-context/search.d.ts +11 -0
- package/dist/features/magic-context/search.d.ts.map +1 -1
- package/dist/features/magic-context/storage-meta-persisted.d.ts +13 -2
- package/dist/features/magic-context/storage-meta-persisted.d.ts.map +1 -1
- package/dist/features/magic-context/storage-meta-session.d.ts +1 -1
- package/dist/features/magic-context/storage-meta-session.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-session-tables.d.ts +2 -0
- package/dist/features/magic-context/storage-session-tables.d.ts.map +1 -1
- package/dist/features/magic-context/storage-tag-identity-revision.d.ts +29 -9
- package/dist/features/magic-context/storage-tag-identity-revision.d.ts.map +1 -1
- package/dist/features/magic-context/storage-tags.d.ts +9 -0
- package/dist/features/magic-context/storage-tags.d.ts.map +1 -1
- package/dist/features/magic-context/storage.d.ts +1 -1
- package/dist/features/magic-context/storage.d.ts.map +1 -1
- package/dist/features/magic-context/tagger.d.ts +2 -0
- package/dist/features/magic-context/tagger.d.ts.map +1 -1
- package/dist/features/magic-context/transform-decision-log.d.ts +3 -0
- package/dist/features/magic-context/transform-decision-log.d.ts.map +1 -1
- package/dist/hooks/magic-context/auto-search-deadline.d.ts.map +1 -1
- package/dist/hooks/magic-context/auto-search-replay.fixture.d.ts +24 -0
- package/dist/hooks/magic-context/auto-search-replay.fixture.d.ts.map +1 -0
- package/dist/hooks/magic-context/auto-search-runner.d.ts +1 -1
- package/dist/hooks/magic-context/auto-search-runner.d.ts.map +1 -1
- package/dist/hooks/magic-context/auto-search-worker-client.d.ts +2 -0
- package/dist/hooks/magic-context/auto-search-worker-client.d.ts.map +1 -1
- package/dist/hooks/magic-context/command-handler.d.ts +2 -0
- package/dist/hooks/magic-context/command-handler.d.ts.map +1 -1
- package/dist/hooks/magic-context/emergency-fail-closed.d.ts +28 -0
- package/dist/hooks/magic-context/emergency-fail-closed.d.ts.map +1 -1
- package/dist/hooks/magic-context/event-handler.d.ts.map +1 -1
- package/dist/hooks/magic-context/historian-host-runner.d.ts +8 -0
- package/dist/hooks/magic-context/historian-host-runner.d.ts.map +1 -1
- package/dist/hooks/magic-context/hook.d.ts +2 -1
- package/dist/hooks/magic-context/hook.d.ts.map +1 -1
- package/dist/hooks/magic-context/inject-compartments.d.ts.map +1 -1
- package/dist/hooks/magic-context/latest-thinking-recovery.d.ts +7 -0
- package/dist/hooks/magic-context/latest-thinking-recovery.d.ts.map +1 -1
- package/dist/hooks/magic-context/lkg-slot.d.ts.map +1 -1
- package/dist/hooks/magic-context/pass-outcome.d.ts +1 -0
- package/dist/hooks/magic-context/pass-outcome.d.ts.map +1 -1
- package/dist/hooks/magic-context/read-session-chunk.d.ts +7 -1
- package/dist/hooks/magic-context/read-session-chunk.d.ts.map +1 -1
- package/dist/hooks/magic-context/read-session-raw.d.ts +35 -0
- package/dist/hooks/magic-context/read-session-raw.d.ts.map +1 -1
- package/dist/hooks/magic-context/rust-mode-transform.d.ts +36 -0
- package/dist/hooks/magic-context/rust-mode-transform.d.ts.map +1 -1
- package/dist/hooks/magic-context/shared-compartment-boundaries.d.ts +8 -1
- package/dist/hooks/magic-context/shared-compartment-boundaries.d.ts.map +1 -1
- package/dist/hooks/magic-context/strict-thinking-prefix.d.ts +8 -0
- package/dist/hooks/magic-context/strict-thinking-prefix.d.ts.map +1 -0
- package/dist/hooks/magic-context/tag-messages.d.ts.map +1 -1
- package/dist/hooks/magic-context/transform-postprocess-phase.d.ts +13 -0
- package/dist/hooks/magic-context/transform-postprocess-phase.d.ts.map +1 -1
- package/dist/hooks/magic-context/transform.d.ts +1 -0
- package/dist/hooks/magic-context/transform.d.ts.map +1 -1
- package/dist/{index-db7zwa3v.js → index-1bt88epp.js} +93 -9
- package/dist/{index-f0h6xwqm.js → index-1g30axtz.js} +229 -67
- package/dist/{index-k1xb52kd.js → index-1r0k9js3.js} +5 -5
- package/dist/{index-692jzy0p.js → index-2jcbj7r1.js} +122 -371
- package/dist/{index-bdckkfw6.js → index-2jgwttpt.js} +16 -8
- package/dist/{index-2y0s2hep.js → index-4mjhqadz.js} +1 -1
- package/dist/{index-pdecwzrd.js → index-57mrqed8.js} +1 -1
- package/dist/{index-ty64eqcn.js → index-9qjqq45k.js} +3 -3
- package/dist/{index-yq8n9qcb.js → index-9rt53q79.js} +4 -4
- package/dist/{index-pg50n748.js → index-b7mv1jx3.js} +4 -4
- package/dist/{index-mmyh6d8f.js → index-ezmszwbd.js} +6 -4
- package/dist/{index-fbv1dn35.js → index-gzcmtmar.js} +1 -1
- package/dist/{index-0an7742d.js → index-h2py7207.js} +549 -973
- package/dist/{index-0qhce371.js → index-h2wc01qk.js} +2 -2
- package/dist/{index-dhwzyd54.js → index-h5zfkjyk.js} +160 -25
- package/dist/{index-q2tqeqde.js → index-ha87j7a8.js} +1229 -78
- package/dist/{index-14cjxt20.js → index-hj2q50k0.js} +45 -8
- package/dist/{index-cb7emxgj.js → index-kmpvemph.js} +336 -6
- package/dist/{index-c43kr12f.js → index-kp5qe690.js} +7 -7
- package/dist/{index-bhvjj0ys.js → index-kq57tdf0.js} +2 -2
- package/dist/{index-7mx8v0pw.js → index-nm6a8xpd.js} +4 -4
- package/dist/{index-8j7gqj40.js → index-nsjyysj0.js} +6 -2
- package/dist/{index-k9nnwad5.js → index-nydv6g8r.js} +44 -7
- package/dist/{index-5zygecde.js → index-peshmj6h.js} +4 -4
- package/dist/{index-knh4y330.js → index-pxwp2hjk.js} +7 -2
- package/dist/{index-1qb0z7wa.js → index-qx53vezw.js} +1 -1
- package/dist/{index-q7h7csab.js → index-s4j7t92z.js} +9 -9
- package/dist/{index-z8e0psj8.js → index-stbr4ce6.js} +3 -3
- package/dist/{index-jcbd3znx.js → index-tqf7yg27.js} +1 -1
- package/dist/{index-72nhv486.js → index-vkbqdnkj.js} +2 -2
- package/dist/{index-eeezr5zz.js → index-z1tjp257.js} +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +61 -44
- package/dist/{logger-d3wex3dz.js → logger-ewak5q1s.js} +1 -1
- package/dist/{message-index-bounded-7ezbgddp.js → message-index-bounded-h0mrd4pr.js} +13 -13
- package/dist/{message-time-backfill-brbd63hv.js → message-time-backfill-8x06r9kx.js} +2 -2
- package/dist/migration-worker.js +9 -9
- package/dist/plugin/hooks/create-session-hooks.d.ts +2 -0
- package/dist/plugin/hooks/create-session-hooks.d.ts.map +1 -1
- package/dist/plugin/tool-registry.d.ts.map +1 -1
- package/dist/{project-embedding-registry-7qzptcw7.js → project-embedding-registry-rtt0djyb.js} +9 -9
- package/dist/raw-ordinal-warmup-worker.js +4 -4
- package/dist/{read-session-chunk-6k83m4fj.js → read-session-chunk-ty89v75e.js} +10 -8
- package/dist/{read-session-raw-3g9qy1xa.js → read-session-raw-8sjbc9h0.js} +5 -3
- package/dist/{recomp-orchestrator-d3fp1cy0.js → recomp-orchestrator-4f1yyd1q.js} +25 -25
- package/dist/{safe-notification-target-5ffqq32m.js → safe-notification-target-q0cyrx3x.js} +2 -2
- package/dist/{search-epax1ecv.js → search-pz4f4wge.js} +20 -20
- package/dist/{send-session-notification-erecz4y4.js → send-session-notification-38cd5dqt.js} +5 -5
- package/dist/shared/auto-search-lifecycle.d.ts +14 -0
- package/dist/shared/auto-search-lifecycle.d.ts.map +1 -1
- package/dist/shared/logger.d.ts.map +1 -1
- package/dist/shared/models-dev-temperature.d.ts +18 -0
- package/dist/shared/models-dev-temperature.d.ts.map +1 -0
- package/dist/shared/project-directory-key.d.ts +16 -0
- package/dist/shared/project-directory-key.d.ts.map +1 -1
- package/dist/shared/subagent-temperature.d.ts +46 -0
- package/dist/shared/subagent-temperature.d.ts.map +1 -0
- package/dist/{storage-tags-d3b0v2ss.js → storage-tags-k0pda32s.js} +6 -4
- package/dist/tools/ctx-reduce/tools.d.ts.map +1 -1
- package/dist/tools/ctx-search/tools.d.ts.map +1 -1
- package/dist/tools/ctx-search/types.d.ts +1 -0
- package/dist/tools/ctx-search/types.d.ts.map +1 -1
- package/dist/{transform-postprocess-phase-spcy2qre.js → transform-postprocess-phase-tck4g20s.js} +25 -25
- package/dist/v2/auto-search-worker.js +3 -3
- package/dist/v2/{context-sf98kstd.js → context-crbt6p1y.js} +809 -1052
- package/dist/v2/{derive-budgets-3vc0y84t.js → derive-budgets-fgej9j46.js} +3 -3
- package/dist/v2/embedding-backfill-ph1qfyn3.js +21 -0
- package/dist/v2/embedding-worker.js +4 -4
- package/dist/v2/hidden-child-native.d.ts.map +1 -1
- package/dist/v2/hidden-completion.d.ts +7 -0
- package/dist/v2/hidden-completion.d.ts.map +1 -1
- package/dist/v2/hooks/context.d.ts.map +1 -1
- package/dist/v2/hooks/dream-trigger.d.ts +4 -1
- package/dist/v2/hooks/dream-trigger.d.ts.map +1 -1
- package/dist/v2/hooks/generate.d.ts +9 -2
- package/dist/v2/hooks/generate.d.ts.map +1 -1
- package/dist/v2/{logger-mxd0ym09.js → logger-pj02s7sr.js} +1 -1
- package/dist/v2/{message-index-bounded-dy3s2k1e.js → message-index-bounded-xwqdywxg.js} +13 -13
- package/dist/v2/{message-time-backfill-gtx1pwk1.js → message-time-backfill-cje68egj.js} +2 -2
- package/dist/v2/migration-worker.js +9 -9
- package/dist/v2/{project-embedding-registry-1tgba5dv.js → project-embedding-registry-d6m7tyxr.js} +9 -9
- package/dist/v2/raw-ordinal-warmup-worker.js +4 -4
- package/dist/v2/{read-session-chunk-rh4khdkv.js → read-session-chunk-8p5mdryx.js} +10 -8
- package/dist/v2/{read-session-raw-bsbmf0vj.js → read-session-raw-j8dvp7f4.js} +5 -3
- package/dist/v2/{recomp-orchestrator-az61rfcg.js → recomp-orchestrator-ckfgt6wq.js} +26 -26
- package/dist/v2/{safe-notification-target-73ax1p5v.js → safe-notification-target-y3p1hce9.js} +2 -2
- package/dist/v2/{search-nzkwrc6n.js → search-ym8rehhz.js} +20 -20
- package/dist/v2/{send-session-notification-6km439kn.js → send-session-notification-5m0yapqx.js} +5 -5
- package/dist/v2/{server-x2g40a71.js → server-19zjmn02.js} +2 -2
- package/dist/v2/{server-sggvvzhb.js → server-1tk82krw.js} +45 -8
- package/dist/v2/{server-vqpf3167.js → server-2s6ayq3t.js} +2 -2
- package/dist/v2/{server-z2037m6z.js → server-2s9qz6n7.js} +2 -2
- package/dist/v2/{server-k228xhjg.js → server-3j4d00kf.js} +1 -1
- package/dist/v2/{server-aan4q8mx.js → server-3t0q2cqx.js} +1 -1
- package/dist/v2/{server-2fbhp79z.js → server-4ez8mntn.js} +16 -8
- package/dist/v2/{server-zxhgvsf9.js → server-676xw7at.js} +1 -1
- package/dist/v2/{server-52awr2mw.js → server-6byqfbqf.js} +93 -9
- package/dist/v2/{server-qye6ykf7.js → server-7ekna9zs.js} +2 -2
- package/dist/v2/{server-g5r0n3b6.js → server-7h861yms.js} +160 -25
- package/dist/v2/{server-v06jcv0w.js → server-8k2agx29.js} +1 -1
- package/dist/v2/{server-686jg6eb.js → server-c5rrgrcd.js} +44 -7
- package/dist/v2/{server-4k748ke6.js → server-hb6xhh9q.js} +2 -2
- package/dist/v2/{server-7wwc2nga.js → server-jvxzm1jy.js} +7 -7
- package/dist/v2/{server-1r6pmz4f.js → server-kzns2hbz.js} +1 -1
- package/dist/v2/{server-xdfwt6kh.js → server-pj4pjv02.js} +2 -2
- package/dist/v2/{server-psqc7e9n.js → server-q4ph9bwn.js} +1227 -78
- package/dist/v2/{server-8pyt7hev.js → server-sa8jvrfc.js} +9 -9
- package/dist/v2/{server-ezhze64f.js → server-ss95ky04.js} +4 -4
- package/dist/v2/{server-5m3dt5r1.js → server-t4k4qexw.js} +6 -2
- package/dist/v2/{server-e0vdaae2.js → server-v4mewb78.js} +4 -4
- package/dist/v2/{server-gjcr4w98.js → server-w32kmdez.js} +4 -4
- package/dist/v2/{server-k8x2rbxc.js → server-x4hscabv.js} +119 -365
- package/dist/v2/{server-yczc713m.js → server-xwz4dqh9.js} +7 -2
- package/dist/v2/{server-xxm59eww.js → server-ycw9qqcy.js} +4 -4
- package/dist/v2/{server-8tqanswc.js → server-zp53y8js.js} +331 -4
- package/dist/v2/server.js +4 -4
- package/dist/v2/{storage-tags-w4tv77sn.js → storage-tags-8vw924zn.js} +6 -4
- package/dist/v2/store-reader.d.ts +8 -2
- package/dist/v2/store-reader.d.ts.map +1 -1
- package/dist/v2/{wrapup-orchestrator-mz7efs7w.js → wrapup-orchestrator-a7efxaax.js} +26 -26
- package/dist/wrapup-orchestrator-barbc6h9.js +44 -0
- package/package.json +1 -1
- package/src/shared/auto-search-lifecycle.ts +43 -0
- package/src/shared/logger.test.ts +38 -0
- package/src/shared/logger.ts +10 -2
- package/src/shared/models-dev-temperature.ts +107 -0
- package/src/shared/project-directory-key.test.ts +59 -0
- package/src/shared/project-directory-key.ts +20 -0
- package/src/shared/subagent-temperature.test.ts +270 -0
- package/src/shared/subagent-temperature.ts +110 -0
- package/dist/embedding-backfill-9rcm1mfy.js +0 -21
- package/dist/v2/embedding-backfill-vn8g1nh1.js +0 -21
- package/dist/wrapup-orchestrator-amzta1t4.js +0 -44
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getHarness2
|
|
3
3
|
} from "./index-pavzsdc6.js";
|
|
4
|
+
import {
|
|
5
|
+
tagIdentityRevisionKey,
|
|
6
|
+
getTemporalDecisions,
|
|
7
|
+
freezeTemporalDecisions,
|
|
8
|
+
stableStringify
|
|
9
|
+
} from "./index-1bt88epp.js";
|
|
4
10
|
import {
|
|
5
11
|
protectedToolTagNumbers,
|
|
6
12
|
stripWellFormedLeadingTagPrefix,
|
|
@@ -64,42 +70,36 @@ import {
|
|
|
64
70
|
adoptNullOwnerToolTag2,
|
|
65
71
|
getCandidateToolOwners2,
|
|
66
72
|
pickNearestPriorOwner2
|
|
67
|
-
} from "./index-
|
|
73
|
+
} from "./index-nydv6g8r.js";
|
|
68
74
|
import {
|
|
69
75
|
textMentionsRecentCommit,
|
|
70
76
|
hasMeaningfulUserText2,
|
|
71
77
|
estimateTokens
|
|
72
|
-
} from "./index-
|
|
78
|
+
} from "./index-qx53vezw.js";
|
|
73
79
|
import {
|
|
74
80
|
log2,
|
|
75
81
|
sessionLog2
|
|
76
|
-
} from "./index-
|
|
82
|
+
} from "./index-nsjyysj0.js";
|
|
77
83
|
import {
|
|
78
84
|
getTagIdentityWriteGeneration2,
|
|
79
85
|
getSqliteDatabasePath2,
|
|
80
86
|
assertTransformWrite2,
|
|
81
87
|
isTransientSqliteError2
|
|
82
88
|
} from "./index-kb9nn0a0.js";
|
|
83
|
-
import {
|
|
84
|
-
getTemporalDecisions,
|
|
85
|
-
freezeTemporalDecisions,
|
|
86
|
-
stableStringify
|
|
87
|
-
} from "./index-db7zwa3v.js";
|
|
88
89
|
import {
|
|
89
90
|
isValidLanguageCode,
|
|
90
91
|
resolveModelConfigValue
|
|
91
|
-
} from "./index-
|
|
92
|
+
} from "./index-kq57tdf0.js";
|
|
92
93
|
import {
|
|
93
94
|
getProjectEmbeddingSnapshot2,
|
|
94
95
|
embedTextForProject2,
|
|
95
96
|
embedBatchForProject2
|
|
96
|
-
} from "./index-
|
|
97
|
+
} from "./index-kp5qe690.js";
|
|
97
98
|
import {
|
|
98
99
|
isEmbeddingHostBusy2
|
|
99
100
|
} from "./index-qt1qqasc.js";
|
|
100
101
|
import {
|
|
101
102
|
BoundedSessionMap,
|
|
102
|
-
renderUserFacingFailure,
|
|
103
103
|
getMaxM0MutationId,
|
|
104
104
|
escalationBands,
|
|
105
105
|
MERGED_REASONING_PARTS_PREFIX,
|
|
@@ -120,7 +120,7 @@ import {
|
|
|
120
120
|
getAutoSearchHintDecisions,
|
|
121
121
|
appendAutoSearchHintDecision,
|
|
122
122
|
pruneNoteNudgeAnchors,
|
|
123
|
-
|
|
123
|
+
flushAutoSearchHintDecisionRetirement,
|
|
124
124
|
getPersistedTodoPermissionDenied,
|
|
125
125
|
setPersistedTodoPermissionDenied,
|
|
126
126
|
getPersistedTodoSyntheticAnchor,
|
|
@@ -146,6 +146,9 @@ import {
|
|
|
146
146
|
setPendingCompactionMarkerState,
|
|
147
147
|
replacePendingCompactionMarkerStateIf,
|
|
148
148
|
clearPendingCompactionMarkerStateIf,
|
|
149
|
+
rememberUnpublishedAutoSearchNoHint,
|
|
150
|
+
getUnpublishedAutoSearchNoHint,
|
|
151
|
+
forgetUnpublishedAutoSearchNoHint,
|
|
149
152
|
registerAutoSearchWork,
|
|
150
153
|
cancelAutoSearchWork,
|
|
151
154
|
updateSessionMeta,
|
|
@@ -170,15 +173,15 @@ import {
|
|
|
170
173
|
peekNoteNudgeText,
|
|
171
174
|
markNoteNudgeDelivered,
|
|
172
175
|
getActiveCompartmentRun
|
|
173
|
-
} from "./index-
|
|
176
|
+
} from "./index-2jcbj7r1.js";
|
|
174
177
|
import {
|
|
175
178
|
runSessionWarmupWorker
|
|
176
|
-
} from "./index-
|
|
179
|
+
} from "./index-h5zfkjyk.js";
|
|
177
180
|
import {
|
|
178
181
|
openCodeDbExists,
|
|
179
182
|
withReadOnlySessionDb,
|
|
180
183
|
getMessageTimesFromOpenCodeDb
|
|
181
|
-
} from "./index-
|
|
184
|
+
} from "./index-9qjqq45k.js";
|
|
182
185
|
import {
|
|
183
186
|
stripSystemInjection,
|
|
184
187
|
isTextPart,
|
|
@@ -203,7 +206,10 @@ import {
|
|
|
203
206
|
extractToolCallObservation,
|
|
204
207
|
ToolMutationBatch,
|
|
205
208
|
createToolDropTarget
|
|
206
|
-
} from "./index-
|
|
209
|
+
} from "./index-2jgwttpt.js";
|
|
210
|
+
import {
|
|
211
|
+
renderUserFacingFailure
|
|
212
|
+
} from "./index-kmpvemph.js";
|
|
207
213
|
import {
|
|
208
214
|
getErrorMessage
|
|
209
215
|
} from "./index-y8v6yerm.js";
|
|
@@ -213,7 +219,7 @@ import {
|
|
|
213
219
|
} from "./index-d9vfe7xq.js";
|
|
214
220
|
import {
|
|
215
221
|
logSlowWriteTransaction
|
|
216
|
-
} from "./index-
|
|
222
|
+
} from "./index-4mjhqadz.js";
|
|
217
223
|
|
|
218
224
|
// src/features/magic-context/tagger.ts
|
|
219
225
|
var TOOL_COMPOSITE_KEY_SEP = "\x00";
|
|
@@ -221,7 +227,9 @@ function makeToolCompositeKey(ownerMsgId, callId) {
|
|
|
221
227
|
return `${ownerMsgId}${TOOL_COMPOSITE_KEY_SEP}${callId}`;
|
|
222
228
|
}
|
|
223
229
|
var GET_COUNTER_SQL = `SELECT counter FROM session_meta WHERE session_id = ?`;
|
|
224
|
-
var GET_TAGS_VERSION_SQL = `SELECT
|
|
230
|
+
var GET_TAGS_VERSION_SQL = `SELECT
|
|
231
|
+
(SELECT tags_version FROM session_meta WHERE session_id = ?) AS tags_version,
|
|
232
|
+
(SELECT value FROM schema_migrations_meta WHERE key = ?) AS identity_revision`;
|
|
225
233
|
var GET_ASSIGNMENTS_SQL = "SELECT message_id, tag_number, type, tool_owner_message_id, byte_size, token_count, input_byte_size, input_token_count FROM tags WHERE session_id = ? ORDER BY tag_number ASC";
|
|
226
234
|
var GET_ASSIGNMENTS_SCOPED_SQL = "SELECT message_id, tag_number, type, tool_owner_message_id, byte_size, token_count, input_byte_size, input_token_count FROM tags WHERE session_id = ? AND tag_number >= ? ORDER BY tag_number ASC";
|
|
227
235
|
var probeTagsVersionStatements = new WeakMap;
|
|
@@ -342,10 +350,16 @@ function createTagger() {
|
|
|
342
350
|
const memCounter = heapHolder.counters.get(sessionId) ?? 0;
|
|
343
351
|
const dbMax = getMaxTagNumberBySession2(db, sessionId);
|
|
344
352
|
const next = Math.max(memCounter, dbMax) + 1;
|
|
353
|
+
const loaded = heapHolder.loadSignatures.get(sessionId);
|
|
354
|
+
let ownedInitialIdentity;
|
|
345
355
|
try {
|
|
346
356
|
db.transaction(() => {
|
|
357
|
+
const admitted = loaded?.db === db && loaded.identityRevision === null ? probeSignature(sessionId, db) : null;
|
|
358
|
+
const initializesOwnedEpoch = admitted !== null && loaded !== undefined && admitted.identityRevision === null && admitted.tagsVersion === loaded.tagsVersion;
|
|
347
359
|
getUpsertCounterStatement(db).run(sessionId, next, getHarness2());
|
|
348
360
|
insertTag2(db, sessionId, messageId, type, byteSize, next, reasoningByteSize, toolName, inputByteSize, toolOwnerMessageId, entryFingerprint, tokenCounts);
|
|
361
|
+
if (initializesOwnedEpoch)
|
|
362
|
+
ownedInitialIdentity = probeSignature(sessionId, db).identityRevision;
|
|
349
363
|
}).immediate();
|
|
350
364
|
} catch (error) {
|
|
351
365
|
if (!isUniqueConstraintError(error)) {
|
|
@@ -366,6 +380,8 @@ function createTagger() {
|
|
|
366
380
|
const signature = heapHolder.loadSignatures.get(sessionId);
|
|
367
381
|
if (signature?.db === db) {
|
|
368
382
|
signature.tagsVersion += 1;
|
|
383
|
+
if (signature === loaded && ownedInitialIdentity !== undefined)
|
|
384
|
+
signature.identityRevision = ownedInitialIdentity;
|
|
369
385
|
}
|
|
370
386
|
if (type === "tool") {
|
|
371
387
|
getSessionToolAccounting(sessionId).set(next, {
|
|
@@ -468,15 +484,16 @@ function createTagger() {
|
|
|
468
484
|
return heapHolder.counters.get(sessionId) ?? 0;
|
|
469
485
|
}
|
|
470
486
|
function probeSignature(sessionId, db) {
|
|
471
|
-
const row = getProbeTagsVersionStatement(db).get(sessionId);
|
|
487
|
+
const row = getProbeTagsVersionStatement(db).get(sessionId, tagIdentityRevisionKey(sessionId));
|
|
472
488
|
return {
|
|
473
|
-
tagsVersion: row?.tags_version ?? 0
|
|
489
|
+
tagsVersion: row?.tags_version ?? 0,
|
|
490
|
+
identityRevision: row?.identity_revision ?? null
|
|
474
491
|
};
|
|
475
492
|
}
|
|
476
493
|
function initFromDb(sessionId, db, floor = 0) {
|
|
477
494
|
const probe = probeSignature(sessionId, db);
|
|
478
495
|
const cached = heapHolder.loadSignatures.get(sessionId);
|
|
479
|
-
if (cached !== undefined && cached.db === db && cached.tagsVersion === probe.tagsVersion && cached.floor === floor) {
|
|
496
|
+
if (cached !== undefined && cached.db === db && cached.tagsVersion === probe.tagsVersion && cached.identityRevision === probe.identityRevision && cached.floor === floor) {
|
|
480
497
|
return;
|
|
481
498
|
}
|
|
482
499
|
const row = db.prepare(GET_COUNTER_SQL).get(sessionId);
|
|
@@ -509,6 +526,7 @@ function createTagger() {
|
|
|
509
526
|
heapHolder.loadSignatures.set(sessionId, {
|
|
510
527
|
db,
|
|
511
528
|
tagsVersion: probe.tagsVersion,
|
|
529
|
+
identityRevision: probe.identityRevision,
|
|
512
530
|
floor
|
|
513
531
|
});
|
|
514
532
|
}
|
|
@@ -516,6 +534,10 @@ function createTagger() {
|
|
|
516
534
|
const signature = heapHolder.loadSignatures.get(sessionId);
|
|
517
535
|
return signature?.db === db ? signature.tagsVersion : undefined;
|
|
518
536
|
}
|
|
537
|
+
function getLoadedTagIdentityRevision(sessionId, db) {
|
|
538
|
+
const signature = heapHolder.loadSignatures.get(sessionId);
|
|
539
|
+
return signature?.db === db ? signature.identityRevision : undefined;
|
|
540
|
+
}
|
|
519
541
|
function cleanup(sessionId) {
|
|
520
542
|
heapHolder.counters.delete(sessionId);
|
|
521
543
|
heapHolder.assignments.delete(sessionId);
|
|
@@ -558,6 +580,7 @@ function createTagger() {
|
|
|
558
580
|
getCounter,
|
|
559
581
|
initFromDb,
|
|
560
582
|
getLoadedTagsVersion,
|
|
583
|
+
getLoadedTagIdentityRevision,
|
|
561
584
|
cleanup,
|
|
562
585
|
getHeapStats
|
|
563
586
|
};
|
|
@@ -606,6 +629,8 @@ function persistAutoSearchSkip(db, sessionId, messageId, reason = "timeout") {
|
|
|
606
629
|
ok = outcome.ok && outcome.decision.decision === "no-hint";
|
|
607
630
|
} catch {}
|
|
608
631
|
assertTransformWrite2();
|
|
632
|
+
if (!ok)
|
|
633
|
+
rememberUnpublishedAutoSearchNoHint(sessionId, messageId, reason);
|
|
609
634
|
const persistence = Promise.resolve(ok);
|
|
610
635
|
messages.set(messageId, persistence);
|
|
611
636
|
return persistence;
|
|
@@ -1237,7 +1262,36 @@ function queueAutoSearchRegistration(db, projectPath, register) {
|
|
|
1237
1262
|
function persistAutoSearchDecision(db, sessionId, decision, startedAt) {
|
|
1238
1263
|
if (performance.now() - startedAt >= AUTO_SEARCH_TIMEOUT_MS)
|
|
1239
1264
|
return null;
|
|
1240
|
-
|
|
1265
|
+
let outcome;
|
|
1266
|
+
try {
|
|
1267
|
+
outcome = appendAutoSearchHintDecision(db, sessionId, decision);
|
|
1268
|
+
} catch (error) {
|
|
1269
|
+
assertTransformWrite2();
|
|
1270
|
+
rememberUnpublishedAutoSearchNoHint(sessionId, decision.messageId, decision.decision === "no-hint" ? decision.reason : "error");
|
|
1271
|
+
if (!isTransientSqliteError2(error))
|
|
1272
|
+
throw error;
|
|
1273
|
+
log2(`[auto-search] decision save hit a busy store for session ${sessionId}; serving without a hint and retrying the save on a later pass: ${error instanceof Error ? error.message : String(error)}`);
|
|
1274
|
+
return { ok: false, kind: "storage-busy" };
|
|
1275
|
+
}
|
|
1276
|
+
if (!outcome.ok) {
|
|
1277
|
+
assertTransformWrite2();
|
|
1278
|
+
rememberUnpublishedAutoSearchNoHint(sessionId, decision.messageId, decision.decision === "no-hint" ? decision.reason : "error");
|
|
1279
|
+
} else if (outcome.decision.decision === "no-hint") {
|
|
1280
|
+
forgetUnpublishedAutoSearchNoHint(sessionId, decision.messageId);
|
|
1281
|
+
}
|
|
1282
|
+
return outcome;
|
|
1283
|
+
}
|
|
1284
|
+
function retryUnpublishedAutoSearchNoHint(db, sessionId, messageId, startedAt) {
|
|
1285
|
+
const reason = getUnpublishedAutoSearchNoHint(sessionId, messageId);
|
|
1286
|
+
if (reason === undefined)
|
|
1287
|
+
return false;
|
|
1288
|
+
try {
|
|
1289
|
+
persistAutoSearchDecision(db, sessionId, { messageId, decision: "no-hint", reason }, startedAt);
|
|
1290
|
+
} catch (error) {
|
|
1291
|
+
assertTransformWrite2();
|
|
1292
|
+
log2(`[auto-search] frozen omission save still failed for session ${sessionId}: ${error instanceof Error ? error.message : String(error)}`);
|
|
1293
|
+
}
|
|
1294
|
+
return true;
|
|
1241
1295
|
}
|
|
1242
1296
|
async function searchAutoHint(db, sessionId, projectPath, query, options, entry = new URL(new URL(import.meta.url).pathname.endsWith(".ts") ? "./auto-search-worker.ts" : "./auto-search-worker.js", import.meta.url)) {
|
|
1243
1297
|
return executeAutoSearchWorker(db, sessionId, projectPath, query, options, entry, "search");
|
|
@@ -1625,6 +1679,9 @@ async function runAutoSearchHint(args) {
|
|
|
1625
1679
|
return coalesceAutoSearchTurn(db, sessionId, userMsgId, async (lifecycleSignal) => {
|
|
1626
1680
|
if (lifecycleSignal.aborted)
|
|
1627
1681
|
return AUTO_SEARCH_OK;
|
|
1682
|
+
if (retryUnpublishedAutoSearchNoHint(db, sessionId, userMsgId, startedAt)) {
|
|
1683
|
+
return AUTO_SEARCH_OK;
|
|
1684
|
+
}
|
|
1628
1685
|
if (wasAutoSearchSkipped(db, sessionId, userMsgId))
|
|
1629
1686
|
return AUTO_SEARCH_OK;
|
|
1630
1687
|
const existing = getAutoSearchHintDecisions(db, sessionId);
|
|
@@ -1655,7 +1712,10 @@ async function runAutoSearchHint(args) {
|
|
|
1655
1712
|
return { ok: false, kind: "timeout" };
|
|
1656
1713
|
}
|
|
1657
1714
|
if (!outcome.ok)
|
|
1658
|
-
return {
|
|
1715
|
+
return {
|
|
1716
|
+
ok: false,
|
|
1717
|
+
kind: outcome.kind === "storage-busy" ? "storage-busy" : "cas-exhaustion"
|
|
1718
|
+
};
|
|
1659
1719
|
if (outcome.kind === "already-present" && outcome.decision.decision === "hint") {
|
|
1660
1720
|
appendReminderToUserMessageById(messages, userMsgId, outcome.decision.text);
|
|
1661
1721
|
}
|
|
@@ -1699,8 +1759,11 @@ async function runAutoSearchHint(args) {
|
|
|
1699
1759
|
});
|
|
1700
1760
|
}, startedAt);
|
|
1701
1761
|
} catch (error) {
|
|
1702
|
-
|
|
1703
|
-
|
|
1762
|
+
if (lifecycleSignal.aborted)
|
|
1763
|
+
return AUTO_SEARCH_OK;
|
|
1764
|
+
log2(`[auto-search] unified search failed for session ${sessionId} (no-hint frozen for this turn): ${error instanceof Error ? error.message : String(error)}`);
|
|
1765
|
+
const outcome = await writeNoHintAndReconcile("error");
|
|
1766
|
+
return outcome.ok ? { ok: false, kind: "search-failure" } : outcome;
|
|
1704
1767
|
}
|
|
1705
1768
|
if (lifecycleSignal.aborted)
|
|
1706
1769
|
return AUTO_SEARCH_OK;
|
|
@@ -1735,6 +1798,8 @@ ${hintText}`;
|
|
|
1735
1798
|
return { ok: false, kind: "timeout" };
|
|
1736
1799
|
}
|
|
1737
1800
|
if (!outcome.ok) {
|
|
1801
|
+
if (outcome.kind === "storage-busy")
|
|
1802
|
+
return { ok: false, kind: "storage-busy" };
|
|
1738
1803
|
sessionLog2(sessionId, `auto-search: CAS exhausted for ${userMsgId}; skipping wire append`);
|
|
1739
1804
|
return { ok: false, kind: "cas-exhaustion" };
|
|
1740
1805
|
}
|
|
@@ -1748,6 +1813,8 @@ ${hintText}`;
|
|
|
1748
1813
|
queueAutoSearchBackfill(db, sessionId, options.projectPath, rawPrompt);
|
|
1749
1814
|
}
|
|
1750
1815
|
}, () => {
|
|
1816
|
+
if (getUnpublishedAutoSearchNoHint(sessionId, userMsgId) !== undefined)
|
|
1817
|
+
return;
|
|
1751
1818
|
if (wasAutoSearchSkipped(db, sessionId, userMsgId))
|
|
1752
1819
|
return;
|
|
1753
1820
|
const decision = getAutoSearchHintDecisions(db, sessionId).find((entry) => entry.messageId === userMsgId);
|
|
@@ -3001,11 +3068,15 @@ function opencodeReasoningBudgetStatus(messages, budget, prefixBound, proseRatio
|
|
|
3001
3068
|
|
|
3002
3069
|
// src/hooks/magic-context/emergency-fail-closed.ts
|
|
3003
3070
|
var ENGINE_RECONNECTING_USER_MESSAGE = "Magic Context's engine is reconnecting. Send your message again in a few seconds.";
|
|
3071
|
+
var ENGINE_BUSY_USER_MESSAGE = "Magic Context is still applying the previous context update for this session. Send your message again in a moment.";
|
|
3004
3072
|
var PROTECTED_TOOL_RESULTS_OVER_LIMIT = "The tool results kept by protected_tools are larger than this model's context window, so this turn was not sent. Lower the protected_tools counts.";
|
|
3005
3073
|
var PROTECTED_TOOL_RESULTS_OVER_LIMIT_CODE = "protected_tool_results_over_limit";
|
|
3074
|
+
var SIGNED_TURN_OVER_LIMIT = "This turn's context is larger than the model's context window even after all of its thinking and reclaimable tool output were removed, so it was not sent. Send a new message or start a new session to continue.";
|
|
3075
|
+
var SIGNED_TURN_OVER_LIMIT_CODE = "signed_turn_over_limit";
|
|
3076
|
+
var SIGNED_THINKING_RESET_FENCE_FAILED = "Magic Context could not record a thinking reset for this session, so this turn was not sent. Send your message again.";
|
|
3006
3077
|
function contextRefusalError(message) {
|
|
3007
3078
|
return new EmergencyFailClosedError(message, {
|
|
3008
|
-
code: message === PROTECTED_TOOL_RESULTS_OVER_LIMIT ? PROTECTED_TOOL_RESULTS_OVER_LIMIT_CODE : undefined
|
|
3079
|
+
code: message === PROTECTED_TOOL_RESULTS_OVER_LIMIT ? PROTECTED_TOOL_RESULTS_OVER_LIMIT_CODE : message === SIGNED_TURN_OVER_LIMIT ? SIGNED_TURN_OVER_LIMIT_CODE : undefined
|
|
3009
3080
|
});
|
|
3010
3081
|
}
|
|
3011
3082
|
function protectedToolRefusal(error) {
|
|
@@ -3015,6 +3086,8 @@ function protectedToolRefusal(error) {
|
|
|
3015
3086
|
const current = error;
|
|
3016
3087
|
if (current.code === PROTECTED_TOOL_RESULTS_OVER_LIMIT_CODE)
|
|
3017
3088
|
return contextRefusalError(PROTECTED_TOOL_RESULTS_OVER_LIMIT);
|
|
3089
|
+
if (current.code === SIGNED_TURN_OVER_LIMIT_CODE)
|
|
3090
|
+
return contextRefusalError(SIGNED_TURN_OVER_LIMIT);
|
|
3018
3091
|
error = current.cause;
|
|
3019
3092
|
}
|
|
3020
3093
|
return;
|
|
@@ -3024,6 +3097,11 @@ function outgoingContextRefusal(estimate, limit, protectedToolTokens = 0) {
|
|
|
3024
3097
|
return;
|
|
3025
3098
|
return PROTECTED_TOOL_RESULTS_OVER_LIMIT;
|
|
3026
3099
|
}
|
|
3100
|
+
function signedTurnContextRefusal(estimate, limit) {
|
|
3101
|
+
if (estimate?.refusalGrade !== true || typeof estimate.refusalTokens !== "number" || !Number.isFinite(estimate.refusalTokens) || !limit || !Number.isFinite(limit) || limit <= 0 || estimate.refusalTokens <= limit)
|
|
3102
|
+
return;
|
|
3103
|
+
return SIGNED_TURN_OVER_LIMIT;
|
|
3104
|
+
}
|
|
3027
3105
|
|
|
3028
3106
|
class EmergencyFailClosedError extends Error {
|
|
3029
3107
|
code;
|
|
@@ -4343,6 +4421,39 @@ function postprocessReplaySnapshot(db, sessionId) {
|
|
|
4343
4421
|
};
|
|
4344
4422
|
}
|
|
4345
4423
|
|
|
4424
|
+
// src/hooks/magic-context/strict-thinking-prefix.ts
|
|
4425
|
+
function servedPrefixMatches(args) {
|
|
4426
|
+
const heads = args.messages?.slice(0, 2);
|
|
4427
|
+
if (!heads || heads.length !== 2 || args.m0Text == null || args.m1Text == null)
|
|
4428
|
+
return false;
|
|
4429
|
+
const text = (message) => {
|
|
4430
|
+
if (!isRecord(message))
|
|
4431
|
+
return;
|
|
4432
|
+
if (typeof message.content === "string")
|
|
4433
|
+
return message.content;
|
|
4434
|
+
const parts = Array.isArray(message.parts) ? message.parts : message.content;
|
|
4435
|
+
if (!Array.isArray(parts))
|
|
4436
|
+
return;
|
|
4437
|
+
return parts.filter(isRecord).filter((part) => part.type === "text").map((part) => String(part.text ?? "")).join("");
|
|
4438
|
+
};
|
|
4439
|
+
if (text(heads[0]) !== args.m0Text || text(heads[1]) !== args.m1Text)
|
|
4440
|
+
return false;
|
|
4441
|
+
const head = heads[0];
|
|
4442
|
+
if (!isRecord(head))
|
|
4443
|
+
return false;
|
|
4444
|
+
const parts = Array.isArray(head.parts) ? head.parts : head.content;
|
|
4445
|
+
if (!Array.isArray(parts))
|
|
4446
|
+
return !args.muralDataUrl;
|
|
4447
|
+
const images = parts.filter(isRecord).filter((part) => part.type === "image" || part.type === "file");
|
|
4448
|
+
if (!args.muralDataUrl)
|
|
4449
|
+
return images.length === 0;
|
|
4450
|
+
if (images.length !== 1)
|
|
4451
|
+
return false;
|
|
4452
|
+
const image = images[0];
|
|
4453
|
+
const url = typeof image.url === "string" ? image.url : typeof image.data === "string" && typeof image.mimeType === "string" ? `data:${image.mimeType};base64,${image.data}` : undefined;
|
|
4454
|
+
return url === args.muralDataUrl;
|
|
4455
|
+
}
|
|
4456
|
+
|
|
4346
4457
|
// src/hooks/magic-context/supersession-reclaim.ts
|
|
4347
4458
|
var SUPERSESSION_RECENT_MESSAGE_WINDOW = 20;
|
|
4348
4459
|
function recentSupersessionOwnerMessageIds(db, sessionId) {
|
|
@@ -4655,6 +4766,7 @@ function getCachedInertWhitespaceAssistantTags(db, sessionId, tagger, messages)
|
|
|
4655
4766
|
const messageIds = messages.flatMap((message) => typeof message.info.id === "string" ? [message.info.id] : []);
|
|
4656
4767
|
const ownersKey = JSON.stringify(messageIds);
|
|
4657
4768
|
const tagsVersion = tagger.getLoadedTagsVersion?.(sessionId, db);
|
|
4769
|
+
const identityRevision = tagger.getLoadedTagIdentityRevision?.(sessionId, db);
|
|
4658
4770
|
if (tagsVersion === undefined)
|
|
4659
4771
|
return getInertWhitespaceAssistantTags2(db, sessionId, messageIds);
|
|
4660
4772
|
let bySession = inertWhitespaceCache.get(db);
|
|
@@ -4663,10 +4775,10 @@ function getCachedInertWhitespaceAssistantTags(db, sessionId, tagger, messages)
|
|
|
4663
4775
|
inertWhitespaceCache.set(db, bySession);
|
|
4664
4776
|
}
|
|
4665
4777
|
const cached = bySession.get(sessionId);
|
|
4666
|
-
if (cached?.tagsVersion === tagsVersion && cached.ownersKey === ownersKey)
|
|
4778
|
+
if (cached?.tagsVersion === tagsVersion && cached.identityRevision === identityRevision && cached.ownersKey === ownersKey)
|
|
4667
4779
|
return cached.tags;
|
|
4668
4780
|
const tags = getInertWhitespaceAssistantTags2(db, sessionId, messageIds);
|
|
4669
|
-
bySession.set(sessionId, { tagsVersion, ownersKey, tags });
|
|
4781
|
+
bySession.set(sessionId, { tagsVersion, identityRevision, ownersKey, tags });
|
|
4670
4782
|
return tags;
|
|
4671
4783
|
}
|
|
4672
4784
|
function makeToolOwnerCacheKey(sessionId, callId) {
|
|
@@ -5509,6 +5621,8 @@ function applyRustModeThinkingStrips(args, hostEditBeforeNewestThinking) {
|
|
|
5509
5621
|
const recoveryMessageIds = new Set;
|
|
5510
5622
|
let thinkingBindingRecovery = null;
|
|
5511
5623
|
let proactiveThinkingStrip = null;
|
|
5624
|
+
const signedThinkingReset = args.cacheBustingPass === true && args.moduleSignedThinkingReset === true;
|
|
5625
|
+
const stripProtection = signedThinkingReset ? undefined : args.protectedThinkingMessages;
|
|
5512
5626
|
{
|
|
5513
5627
|
try {
|
|
5514
5628
|
for (const id of getMergedReasoningStrippedIds(args.db, args.sessionId)) {
|
|
@@ -5535,26 +5649,31 @@ function applyRustModeThinkingStrips(args, hostEditBeforeNewestThinking) {
|
|
|
5535
5649
|
} catch (error) {
|
|
5536
5650
|
sessionLog2(args.sessionId, "rust thinking binding recovery failed:", error);
|
|
5537
5651
|
}
|
|
5538
|
-
stripReasoningFromAssistantIds(args.messages, args.resolvedProviderID, recoveryMessageIds,
|
|
5539
|
-
const moduleBustStrips = !args.activeThinkingTurn && args.cacheBustingPass === true && (args.moduleReasoningTrimOnly !== true || hostEditBeforeNewestThinking);
|
|
5540
|
-
const stripFrom = args.thinkingBindingRecoveryEnabledForModel === true ? proactiveStripStartIndex({ ...args, cacheBustingPass: moduleBustStrips }) : null;
|
|
5652
|
+
stripReasoningFromAssistantIds(args.messages, args.resolvedProviderID, recoveryMessageIds, stripProtection);
|
|
5653
|
+
const moduleBustStrips = signedThinkingReset || !args.activeThinkingTurn && args.cacheBustingPass === true && (args.moduleReasoningTrimOnly !== true || hostEditBeforeNewestThinking);
|
|
5654
|
+
const stripFrom = args.thinkingBindingRecoveryEnabledForModel === true || signedThinkingReset ? proactiveStripStartIndex({ ...args, cacheBustingPass: moduleBustStrips }) : null;
|
|
5541
5655
|
if (stripFrom !== null) {
|
|
5656
|
+
const stripped = args.messages.slice(stripFrom);
|
|
5542
5657
|
const outcome = freezeReasoningOnBustingPass2({
|
|
5543
5658
|
db: args.db,
|
|
5544
5659
|
sessionId: args.sessionId,
|
|
5545
|
-
messages:
|
|
5546
|
-
protectedMessages:
|
|
5660
|
+
messages: stripped,
|
|
5661
|
+
protectedMessages: stripProtection,
|
|
5547
5662
|
alreadyFrozen: recoveryMessageIds
|
|
5548
5663
|
});
|
|
5549
5664
|
if (outcome.strip) {
|
|
5550
5665
|
proactiveThinkingStrip = outcome.strip;
|
|
5551
5666
|
for (const id of outcome.strip.messageIds)
|
|
5552
5667
|
recoveryMessageIds.add(id);
|
|
5553
|
-
|
|
5668
|
+
}
|
|
5669
|
+
const removed = signedThinkingReset ? new Set(findReasoningBearingAssistantIds(stripped)) : new Set(outcome.strip?.messageIds ?? []);
|
|
5670
|
+
if (removed.size > 0) {
|
|
5671
|
+
stripReasoningFromAssistantIds(args.messages, args.resolvedProviderID, removed, stripProtection);
|
|
5554
5672
|
}
|
|
5555
5673
|
}
|
|
5556
5674
|
}
|
|
5557
|
-
|
|
5675
|
+
if (!signedThinkingReset)
|
|
5676
|
+
args.restoreLatestTurnOriginals?.();
|
|
5558
5677
|
return { thinkingBindingRecovery, proactiveThinkingStrip };
|
|
5559
5678
|
}
|
|
5560
5679
|
function runRustModePostprocess2(args) {
|
|
@@ -5597,7 +5716,7 @@ function runRustModePostprocess2(args) {
|
|
|
5597
5716
|
appendReminderToUserMessageById(args.messages, anchor.messageId, anchor.text);
|
|
5598
5717
|
}
|
|
5599
5718
|
for (const decision of getAutoSearchHintDecisions(args.db, args.sessionId)) {
|
|
5600
|
-
if (decision.decision === "hint") {
|
|
5719
|
+
if (decision.decision === "hint" && getUnpublishedAutoSearchNoHint(args.sessionId, decision.messageId) === undefined) {
|
|
5601
5720
|
appendReminderToUserMessageById(args.messages, decision.messageId, decision.text);
|
|
5602
5721
|
}
|
|
5603
5722
|
}
|
|
@@ -5860,7 +5979,7 @@ async function runPostTransformPhase2(args) {
|
|
|
5860
5979
|
const reasoningMutationExemptMessage = findLatestAssistantReasoningMutationExemptMessage(args.messages);
|
|
5861
5980
|
const pendingMaterializationAtPassStart = args.pendingMaterializationSessions.has(args.sessionId);
|
|
5862
5981
|
const deferredMaterializationAtPassStart = args.deferredMaterializationSessions.has(args.sessionId);
|
|
5863
|
-
|
|
5982
|
+
let isExplicitFlush = pendingMaterializationAtPassStart;
|
|
5864
5983
|
const deferredMaterializationWasPending = deferredMaterializationAtPassStart;
|
|
5865
5984
|
const alreadyRanThisTurn = args.currentTurnId !== null && args.lastHeuristicsTurnId.get(args.sessionId) === args.currentTurnId;
|
|
5866
5985
|
const forceMaterialization = args.fullFeatureMode && !compactionOff && args.contextUsage.percentage >= args.forceMaterializationPercentage;
|
|
@@ -5877,8 +5996,8 @@ async function runPostTransformPhase2(args) {
|
|
|
5877
5996
|
}
|
|
5878
5997
|
const activeCompartmentRun = args.canRunCompartments ? getActiveCompartmentRun(args.sessionId) : undefined;
|
|
5879
5998
|
const compartmentRunning = args.canRunCompartments && !args.awaitedCompartmentRun && activeCompartmentRun !== undefined;
|
|
5880
|
-
|
|
5881
|
-
|
|
5999
|
+
let deferredMaterialize = args.canConsumeDeferredLate && deferredMaterializationWasPending;
|
|
6000
|
+
let materializationRequested = isExplicitFlush || deferredMaterialize;
|
|
5882
6001
|
const m0M1EnabledForFold = args.m0M1 !== undefined && (!!args.m0M1.projectPath || !!args.m0M1.projectDirectory) && (args.fullFeatureMode || compactionOff);
|
|
5883
6002
|
const frozenThinking = new Set(args.activeThinkingTurn ? getMergedReasoningStrippedIds(args.db, args.sessionId) : []);
|
|
5884
6003
|
const bindingThinking = new Set([...frozenThinking].filter((id) => id.startsWith(THINKING_BINDING_RECOVERY_FROZEN_PREFIX)).map((id) => id.slice(THINKING_BINDING_RECOVERY_FROZEN_PREFIX.length)));
|
|
@@ -5890,9 +6009,9 @@ async function runPostTransformPhase2(args) {
|
|
|
5890
6009
|
bindingIds: bindingThinking,
|
|
5891
6010
|
removedIds: getReasoningRemovalState(args.db, args.sessionId).messageIds
|
|
5892
6011
|
}) : new Set;
|
|
5893
|
-
|
|
6012
|
+
let activeThinkingTurn = retainedThinking.size > 0;
|
|
5894
6013
|
const protectedThinkingMessages = new Set(args.messages.filter((message) => message.parts.some((part) => retainedThinking.has(part))));
|
|
5895
|
-
|
|
6014
|
+
let newTargets = protectNewTagMutations(args.messages, args.targets, retainedThinking, args.thinkingBindingRecoveryEnabledForModel === true);
|
|
5896
6015
|
let maxReasoningTag = 0;
|
|
5897
6016
|
for (const tag of args.messageTagNumbers.values())
|
|
5898
6017
|
maxReasoningTag = Math.max(maxReasoningTag, tag);
|
|
@@ -5902,7 +6021,28 @@ async function runPostTransformPhase2(args) {
|
|
|
5902
6021
|
if (tag && tag > 0)
|
|
5903
6022
|
safeReasoningCutoff = Math.min(safeReasoningCutoff, tag - 1);
|
|
5904
6023
|
}
|
|
5905
|
-
|
|
6024
|
+
let activeThinkingPrefixHold = args.activeThinkingPrefixHold === true || activeThinkingTurn && args.thinkingBindingRecoveryEnabledForModel === true;
|
|
6025
|
+
let freezeM0M1 = args.freezeM0M1 === true || activeThinkingPrefixHold;
|
|
6026
|
+
let rewritingSignedPrefix = false;
|
|
6027
|
+
let thinkingReleasedForFit = false;
|
|
6028
|
+
const releaseThinkingForRewrite = (forFit = false) => {
|
|
6029
|
+
const stripped = freezeReasoningOnBustingPass2({
|
|
6030
|
+
db: args.db,
|
|
6031
|
+
sessionId: args.sessionId,
|
|
6032
|
+
messages: args.messages,
|
|
6033
|
+
alreadyFrozen: bindingThinking
|
|
6034
|
+
});
|
|
6035
|
+
if (stripped.persistenceFailed)
|
|
6036
|
+
throw new Error("Cannot persist signed thinking omission before prefix rewrite");
|
|
6037
|
+
retainedThinking.clear();
|
|
6038
|
+
protectedThinkingMessages.clear();
|
|
6039
|
+
activeThinkingTurn = false;
|
|
6040
|
+
activeThinkingPrefixHold = false;
|
|
6041
|
+
freezeM0M1 = args.directoryPrefixHold === true;
|
|
6042
|
+
newTargets = args.targets;
|
|
6043
|
+
rewritingSignedPrefix = true;
|
|
6044
|
+
thinkingReleasedForFit ||= forFit;
|
|
6045
|
+
};
|
|
5906
6046
|
const foldDueDecision = m0M1EnabledForFold && args.m0M1 && !freezeM0M1 ? mustMaterialize({
|
|
5907
6047
|
db: args.db,
|
|
5908
6048
|
sessionId: args.sessionId,
|
|
@@ -5922,6 +6062,7 @@ async function runPostTransformPhase2(args) {
|
|
|
5922
6062
|
const cachedPrefixBeforePreflight = shouldCaptureCachedPrefix ? prepareCachedM0M1Replay(args.db, args.sessionId) : undefined;
|
|
5923
6063
|
const completeCachedPrefixAvailable = args.sessionMeta.cachedM0Bytes != null && args.sessionMeta.cachedM1Bytes != null || cachedPrefixBeforePreflight !== undefined || m0M1EnabledForFold && !shouldCaptureCachedPrefix && hasCompleteCachedM0M1(args.db, args.sessionId);
|
|
5924
6064
|
const firstRenderBust = m0M1EnabledForFold && !completeCachedPrefixAvailable;
|
|
6065
|
+
const servedBeforeFirstRender = firstRenderBust ? args.readLastServedMessages?.() : null;
|
|
5925
6066
|
let foldExecutedThisPass = false;
|
|
5926
6067
|
let foldBustsServedPrefixThisPass = false;
|
|
5927
6068
|
let publishedM1RefreshedThisPass = false;
|
|
@@ -5939,7 +6080,7 @@ async function runPostTransformPhase2(args) {
|
|
|
5939
6080
|
m1Bytes: args.sessionMeta.cachedM1Bytes ?? null,
|
|
5940
6081
|
muralDataUrl: args.sessionMeta.cachedM0MuralDataUrl ?? null
|
|
5941
6082
|
};
|
|
5942
|
-
if ((foldDueDecision.value || softRefreshOpportunity) && m0M1EnabledForFold && args.m0M1) {
|
|
6083
|
+
if ((foldDueDecision.value || softRefreshOpportunity || firstRenderBust && activeThinkingPrefixHold) && m0M1EnabledForFold && args.m0M1) {
|
|
5943
6084
|
let committedFoldBustsServedPrefix;
|
|
5944
6085
|
try {
|
|
5945
6086
|
const previousM1 = args.sessionMeta.cachedM1Bytes?.toString("utf8");
|
|
@@ -5964,7 +6105,12 @@ async function runPostTransformPhase2(args) {
|
|
|
5964
6105
|
onFoldPrepare: () => {
|
|
5965
6106
|
const conversions = prepareLegacyToolSkeletonConversions(args.db, args.sessionId, args.targets);
|
|
5966
6107
|
return (db, rendered) => {
|
|
5967
|
-
const bustsPrefix =
|
|
6108
|
+
const bustsPrefix = activeThinkingPrefixHold ? !servedPrefixMatches({
|
|
6109
|
+
messages: servedBeforeFirstRender,
|
|
6110
|
+
m0Text: rendered.m0Bytes.toString(),
|
|
6111
|
+
m1Text: rendered.m1Bytes.toString(),
|
|
6112
|
+
muralDataUrl: rendered.muralDataUrl
|
|
6113
|
+
}) : foldBustsServedPrefix(foldDueDecision.reason, servedPrefixBeforeFold, rendered);
|
|
5968
6114
|
if (bustsPrefix) {
|
|
5969
6115
|
if (!conversions.isCurrent(db)) {
|
|
5970
6116
|
throw new MaterializeContentionError({
|
|
@@ -5981,6 +6127,9 @@ async function runPostTransformPhase2(args) {
|
|
|
5981
6127
|
}
|
|
5982
6128
|
});
|
|
5983
6129
|
preparedPrefix = foldResult;
|
|
6130
|
+
if (activeThinkingPrefixHold && firstRenderBust && committedFoldBustsServedPrefix) {
|
|
6131
|
+
releaseThinkingForRewrite();
|
|
6132
|
+
}
|
|
5984
6133
|
prefixPreflightFailed = foldResult.materializationContentionRetryExhausted === true;
|
|
5985
6134
|
foldExecutedThisPass = foldExecutesThisPass(foldDueDecision.value || softRefreshOpportunity, foldResult.m0RematerializedThisPass);
|
|
5986
6135
|
foldBustsServedPrefixThisPass = foldExecutedThisPass && (committedFoldBustsServedPrefix ?? true);
|
|
@@ -6016,6 +6165,15 @@ async function runPostTransformPhase2(args) {
|
|
|
6016
6165
|
}
|
|
6017
6166
|
logTransformTiming(args.sessionId, "pp.prefixPreflight", tPostprocessSetup, `foldExecuted=${foldExecutedThisPass} m1Refreshed=${publishedM1RefreshedThisPass}`);
|
|
6018
6167
|
const tPassDecisions = performance.now();
|
|
6168
|
+
const frontToolCandidates = args.tags.filter((tag) => tag.type === "tool" && tag.status === "active" && args.targets.get(tag.tagNumber)?.canDrop?.());
|
|
6169
|
+
if (activeThinkingPrefixHold && (args.forceSignedRebuildForFit || args.contextUsage.percentage >= 95 && frontToolCandidates.length > 0 && frontToolCandidates.every((tag) => newTargets.get(tag.tagNumber)?.thinkingRewriteProtected === true))) {
|
|
6170
|
+
releaseThinkingForRewrite(true);
|
|
6171
|
+
}
|
|
6172
|
+
if (activeThinkingPrefixHold) {
|
|
6173
|
+
isExplicitFlush = false;
|
|
6174
|
+
deferredMaterialize = false;
|
|
6175
|
+
materializationRequested = false;
|
|
6176
|
+
}
|
|
6019
6177
|
const shouldReadPendingOps = !compactionOff && (materializationRequested || publishedM1RefreshedThisPass || args.schedulerDecision === "execute" || forceMaterialization || foldExecutedThisPass || firstRenderBust || compartmentRunning);
|
|
6020
6178
|
const pendingOps = shouldReadPendingOps ? getPendingOps(args.db, args.sessionId) : [];
|
|
6021
6179
|
const hasPendingUserOps = pendingOps.length > 0;
|
|
@@ -6025,7 +6183,8 @@ async function runPostTransformPhase2(args) {
|
|
|
6025
6183
|
const depth = getPendingOpsCount(args.db, args.sessionId);
|
|
6026
6184
|
return depth === null ? "not loaded (deferred pass)" : String(depth);
|
|
6027
6185
|
};
|
|
6028
|
-
const
|
|
6186
|
+
const heldIdleExpiryRebuild = activeThinkingPrefixHold && args.m0M1?.hardSignals?.cacheExpired === true;
|
|
6187
|
+
const idleExpiryRebuild = (!freezeM0M1 || activeThinkingPrefixHold) && args.m0M1?.hardSignals?.cacheExpired === true;
|
|
6029
6188
|
const rideSignals = {
|
|
6030
6189
|
subagentExecute: !args.fullFeatureMode && args.schedulerDecision === "execute",
|
|
6031
6190
|
hardFold: foldBustsServedPrefixThisPass || firstRenderBust || idleExpiryRebuild,
|
|
@@ -6033,15 +6192,16 @@ async function runPostTransformPhase2(args) {
|
|
|
6033
6192
|
explicitFlush: isExplicitFlush || deferredMaterialize && !prefixPreflightFailed,
|
|
6034
6193
|
publishedHistory: publishedM1RefreshedThisPass || !m0M1EnabledForFold && (args.pendingCompartmentInjection?.compartmentCount ?? 0) > 0 && (args.historyRebuiltThisPass || args.rebuiltHistoryFromInitialPrepare || args.canConsumeDeferredLate && args.deferredHistoryWasPendingAtPassStart)
|
|
6035
6194
|
};
|
|
6036
|
-
const publishedWorkDrainAllowed = !compactionOff && hasReclaimRide(rideSignals);
|
|
6195
|
+
const publishedWorkDrainAllowed = !compactionOff && (!activeThinkingPrefixHold || firstRenderBust || idleExpiryRebuild || emergencyDropEligible) && hasReclaimRide(rideSignals);
|
|
6037
6196
|
const shouldApplyPendingOps = publishedWorkDrainAllowed;
|
|
6038
|
-
const shouldRunHeuristics =
|
|
6197
|
+
const shouldRunHeuristics = publishedWorkDrainAllowed && (rideSignals.publishedHistory || materializationRequested || forceMaterialization || foldBustsServedPrefixThisPass || firstRenderBust || heldIdleExpiryRebuild || emergencyDropEligible || args.schedulerDecision === "execute" && (!alreadyRanThisTurn || !args.fullFeatureMode));
|
|
6039
6198
|
const isCacheBustingPass = publishedWorkDrainAllowed;
|
|
6199
|
+
const canEditWholePrefix = isCacheBustingPass && !activeThinkingPrefixHold;
|
|
6040
6200
|
const previousTemporalDecisions = args.temporalCandidates && !compactionOff ? new Map([
|
|
6041
6201
|
...args.temporalObservedDecisions ?? [],
|
|
6042
6202
|
...getTemporalDecisions(args.db, args.sessionId, args.temporalReplayIds ?? args.temporalCandidates.keys())
|
|
6043
6203
|
]) : undefined;
|
|
6044
|
-
const temporalDecisions = args.temporalCandidates && !compactionOff ?
|
|
6204
|
+
const temporalDecisions = args.temporalCandidates && !compactionOff ? canEditWholePrefix ? new Map([
|
|
6045
6205
|
...previousTemporalDecisions ?? [],
|
|
6046
6206
|
...freezeTemporalDecisions(args.db, args.sessionId, args.temporalCandidates)
|
|
6047
6207
|
]) : previousTemporalDecisions : undefined;
|
|
@@ -6199,7 +6359,7 @@ async function runPostTransformPhase2(args) {
|
|
|
6199
6359
|
wordRules: args.cavemanTextCompression.wordRules
|
|
6200
6360
|
} : undefined;
|
|
6201
6361
|
const heuristicTags = shouldApplyPendingOps ? getActiveTagsBySession2(args.db, args.sessionId) : args.tags;
|
|
6202
|
-
const emergencyRewriteAlreadyPriced = pendingOpsDidMutate || foldBustsServedPrefixThisPass || args.historyRebuiltThisPass || args.compartmentInjectionRebuiltFromDb || args.rebuiltHistoryFromInitialPrepare;
|
|
6362
|
+
const emergencyRewriteAlreadyPriced = pendingOpsDidMutate || foldBustsServedPrefixThisPass || firstRenderBust || heldIdleExpiryRebuild || args.historyRebuiltThisPass || args.compartmentInjectionRebuiltFromDb || args.rebuiltHistoryFromInitialPrepare;
|
|
6203
6363
|
if (emergencyDropEligible && emergencyRewriteAlreadyPriced && getEmergencyInputSample(args.db, args.sessionId) > 0) {
|
|
6204
6364
|
clearEmergencyDropSample(args.db, args.sessionId);
|
|
6205
6365
|
}
|
|
@@ -6260,7 +6420,7 @@ async function runPostTransformPhase2(args) {
|
|
|
6260
6420
|
}
|
|
6261
6421
|
}
|
|
6262
6422
|
const reasoningEstimates = tryGetReasoningTokenEstimatesByMessage2(args.db, args.sessionId, sessionDecisionCalibration(args.db, args.sessionId).proseRatio);
|
|
6263
|
-
const budgetCutoff = routineCleanupApplied && reasoningEstimates ? Math.min(safeReasoningCutoff, opencodeReasoningBudgetCutoff({
|
|
6423
|
+
const budgetCutoff = routineCleanupApplied && !activeThinkingPrefixHold && reasoningEstimates ? Math.min(safeReasoningCutoff, opencodeReasoningBudgetCutoff({
|
|
6264
6424
|
messages: args.messages,
|
|
6265
6425
|
messageTagNumbers: args.messageTagNumbers,
|
|
6266
6426
|
budget: args.keepReasoningTokens ?? DEFAULT_KEEP_REASONING_TOKENS,
|
|
@@ -6282,7 +6442,7 @@ async function runPostTransformPhase2(args) {
|
|
|
6282
6442
|
replayStrippedInlineThinking(args.messages, args.messageTagNumbers, persistedInlineWatermark);
|
|
6283
6443
|
}
|
|
6284
6444
|
let removedReasoningMessages = 0;
|
|
6285
|
-
if (routineCleanupApplied && reasoningRemovalSelectable && reasoningRemovalReadable) {
|
|
6445
|
+
if (routineCleanupApplied && !prefixBoundModel && reasoningRemovalSelectable && reasoningRemovalReadable) {
|
|
6286
6446
|
const newIds = selectReasoningRemovals({
|
|
6287
6447
|
messages: args.messages,
|
|
6288
6448
|
messageTagNumbers: args.messageTagNumbers,
|
|
@@ -6399,7 +6559,7 @@ async function runPostTransformPhase2(args) {
|
|
|
6399
6559
|
logTransformTiming(args.sessionId, "toolReclaim.select", tReclaimSelect, `targets=${autoReclaimTargetCount}`);
|
|
6400
6560
|
if (syntheticPendingOps.length > 0) {
|
|
6401
6561
|
const tReclaimApply = performance.now();
|
|
6402
|
-
autoReclaimDidMutate = applyPendingOperations(args.sessionId, args.db,
|
|
6562
|
+
autoReclaimDidMutate = applyPendingOperations(args.sessionId, args.db, newTargets, args.protectedTagIds, undefined, [], syntheticPendingOps, editMarkerTagIds, (reduction) => droppedTokenReductions.push(reduction));
|
|
6403
6563
|
logTransformTiming(args.sessionId, "toolReclaim.apply", tReclaimApply);
|
|
6404
6564
|
if (autoReclaimDidMutate) {
|
|
6405
6565
|
droppedCount += syntheticPendingOps.length;
|
|
@@ -6452,7 +6612,7 @@ async function runPostTransformPhase2(args) {
|
|
|
6452
6612
|
const t8 = performance.now();
|
|
6453
6613
|
const frozenStaleReduceIds = replaySnapshot.staleReduceStrippedIds;
|
|
6454
6614
|
const staleReduceResult = dropStaleReduceCalls(args.messages, frozenStaleReduceIds, {
|
|
6455
|
-
detect:
|
|
6615
|
+
detect: canEditWholePrefix,
|
|
6456
6616
|
protectedCount: args.protectedCount,
|
|
6457
6617
|
protectedCallIds: new Set(args.tags.filter((tag) => protectedToolTags.has(tag.tagNumber)).map((tag) => tag.messageId)),
|
|
6458
6618
|
onFirstApplication: recordFirstApplicationAt
|
|
@@ -6471,7 +6631,7 @@ async function runPostTransformPhase2(args) {
|
|
|
6471
6631
|
const tImg = performance.now();
|
|
6472
6632
|
const frozenImageIds = replaySnapshot.processedImageStrippedIds;
|
|
6473
6633
|
const imageResult = stripProcessedImages(args.messages, frozenImageIds, {
|
|
6474
|
-
detect:
|
|
6634
|
+
detect: canEditWholePrefix && args.watermark > 0,
|
|
6475
6635
|
watermark: args.watermark,
|
|
6476
6636
|
messageTagNumbers: args.messageTagNumbers,
|
|
6477
6637
|
onFirstApplication: recordFirstApplicationAt
|
|
@@ -6715,7 +6875,7 @@ async function runPostTransformPhase2(args) {
|
|
|
6715
6875
|
messages: args.messages,
|
|
6716
6876
|
fullFeatureMode: args.fullFeatureMode,
|
|
6717
6877
|
compactionOff,
|
|
6718
|
-
isCacheBustingPass,
|
|
6878
|
+
isCacheBustingPass: canEditWholePrefix,
|
|
6719
6879
|
sessionMeta: args.sessionMeta,
|
|
6720
6880
|
todowriteAvailability: args.todowriteAvailability,
|
|
6721
6881
|
client: args.client,
|
|
@@ -6782,7 +6942,7 @@ async function runPostTransformPhase2(args) {
|
|
|
6782
6942
|
autoSearchHintAppendedThisPass = autoSearchCompletedThisPass && countAutoSearchHints(args.db, args.sessionId) !== autoSearchHintsBefore;
|
|
6783
6943
|
logTransformTiming(args.sessionId, "pp.autoSearchHint", tAutoSearch);
|
|
6784
6944
|
}
|
|
6785
|
-
if (args.fullFeatureMode &&
|
|
6945
|
+
if (args.fullFeatureMode && canEditWholePrefix) {
|
|
6786
6946
|
const visibleIds = new Set;
|
|
6787
6947
|
for (const message of args.messages) {
|
|
6788
6948
|
if (typeof message.info?.id === "string") {
|
|
@@ -6790,15 +6950,15 @@ async function runPostTransformPhase2(args) {
|
|
|
6790
6950
|
}
|
|
6791
6951
|
}
|
|
6792
6952
|
const prunedAnchors = pruneNoteNudgeAnchors(args.db, args.sessionId, visibleIds);
|
|
6793
|
-
|
|
6794
|
-
if (prunedAnchors > 0
|
|
6795
|
-
sessionLog2(args.sessionId, `sticky-injection GC: pruned ${prunedAnchors} note-nudge anchor(s)
|
|
6953
|
+
flushAutoSearchHintDecisionRetirement(args.db, args.sessionId, visibleIds);
|
|
6954
|
+
if (prunedAnchors > 0) {
|
|
6955
|
+
sessionLog2(args.sessionId, `sticky-injection GC: pruned ${prunedAnchors} note-nudge anchor(s)`);
|
|
6796
6956
|
}
|
|
6797
6957
|
}
|
|
6798
6958
|
const materializeReason = m0MaterializeReason ?? (explicitMaterializedSuccessfully ? "explicit_flush" : null);
|
|
6799
6959
|
const materialized = m0RematerializedThisPass || explicitMaterializedSuccessfully || deferredMaterializedSuccessfully;
|
|
6800
6960
|
let bustedThisPass = firstApplicationEdits.any || firstRenderBust || pendingOpsDidMutate || heuristicOrReasoningDidMutate || autoReclaimDidMutateThisPass || convertedToolSkeletonsDidMutate || m0RematerializedThisPass || m0M1InjectedThisPass && historyWasConsumedThisPass || historyWasConsumedThisPass;
|
|
6801
|
-
const proactiveThinkingStripPermitted = isCacheBustingPass;
|
|
6961
|
+
const proactiveThinkingStripPermitted = isCacheBustingPass && !activeThinkingPrefixHold;
|
|
6802
6962
|
const tFrozenDecisions = performance.now();
|
|
6803
6963
|
if (reasoningMutationTargetUnknown) {
|
|
6804
6964
|
const reasoningCandidates = args.reasoningByMessage.size > 0 ? args.reasoningByMessage.keys() : args.messages;
|
|
@@ -6849,7 +7009,7 @@ async function runPostTransformPhase2(args) {
|
|
|
6849
7009
|
sessionLog2(args.sessionId, "thinking binding recovery: persistence failed; leaving the bound blocks intact");
|
|
6850
7010
|
}
|
|
6851
7011
|
}
|
|
6852
|
-
if (canUseEmptySentinels &&
|
|
7012
|
+
if (canUseEmptySentinels && canEditWholePrefix) {
|
|
6853
7013
|
const candidates = findMergedReasoningStripDecisions(args.messages, args.resolvedProviderID, mergedReasoningStrippedIds, {
|
|
6854
7014
|
mutationExemptMessage: reasoningMutationExemptMessage,
|
|
6855
7015
|
protectedMessages: protectedThinkingMessages
|
|
@@ -6895,7 +7055,7 @@ async function runPostTransformPhase2(args) {
|
|
|
6895
7055
|
recordFirstApplicationAt(message, partIndex);
|
|
6896
7056
|
}
|
|
6897
7057
|
};
|
|
6898
|
-
if (
|
|
7058
|
+
if (canEditWholePrefix && trailingBlankDecisions.size > 0) {
|
|
6899
7059
|
const visibleMessageIds = new Set(args.messages.flatMap((message) => typeof message.info.id === "string" ? [message.info.id] : []));
|
|
6900
7060
|
const poisonedKeepIds = [];
|
|
6901
7061
|
for (const [id, decision] of trailingBlankDecisions) {
|
|
@@ -7000,7 +7160,7 @@ async function runPostTransformPhase2(args) {
|
|
|
7000
7160
|
}
|
|
7001
7161
|
}
|
|
7002
7162
|
}
|
|
7003
|
-
const prefixEditBesidesReasoningTrim = firstRenderBust || materializationRequested || explicitMaterializedSuccessfully || deferredMaterializedSuccessfully || foldBustsServedPrefixThisPass || publishedM1RefreshedThisPass || m0RematerializedThisPass || m0M1InjectedThisPass && historyWasConsumedThisPass || historyWasConsumedThisPass || pendingOpsDidMutate || heuristicOrReasoningEditBesidesTrim || emergency || autoReclaimDidMutateThisPass || convertedToolSkeletonsDidMutate || deferredClearedMarkerRetires || noteNudgeAppendedThisPass || todoAnchorMovedThisPass || autoSearchHintAppendedThisPass || dropModeSwitchesThisPass || firstApplicationEdits.beforeNewerThinking;
|
|
7163
|
+
const prefixEditBesidesReasoningTrim = firstRenderBust || heldIdleExpiryRebuild || materializationRequested || explicitMaterializedSuccessfully || deferredMaterializedSuccessfully || foldBustsServedPrefixThisPass || publishedM1RefreshedThisPass || m0RematerializedThisPass || m0M1InjectedThisPass && historyWasConsumedThisPass || historyWasConsumedThisPass || pendingOpsDidMutate || heuristicOrReasoningEditBesidesTrim || emergency || autoReclaimDidMutateThisPass || convertedToolSkeletonsDidMutate || deferredClearedMarkerRetires || noteNudgeAppendedThisPass || todoAnchorMovedThisPass || autoSearchHintAppendedThisPass || dropModeSwitchesThisPass || firstApplicationEdits.beforeNewerThinking;
|
|
7004
7164
|
let proactiveThinkingStrip = null;
|
|
7005
7165
|
if (!compactionOff && args.thinkingBindingRecoveryEnabledForModel === true && proactiveThinkingStripPermitted && prefixEditBesidesReasoningTrim) {
|
|
7006
7166
|
const outcome = freezeReasoningOnBustingPass2({
|
|
@@ -7047,8 +7207,9 @@ async function runPostTransformPhase2(args) {
|
|
|
7047
7207
|
const removedReasoningParts = reasoningRemovalEnabled ? removeReasoningParts(args.messages, removedReasoningIds, args.resolvedProviderID) : 0;
|
|
7048
7208
|
const reasoningStatusRatio = sessionDecisionCalibration(args.db, args.sessionId).proseRatio;
|
|
7049
7209
|
captureOpencodeReasoningBudgetStatus(args.sessionId, args.messages, args.keepReasoningTokens ?? DEFAULT_KEEP_REASONING_TOKENS, prefixBoundModel, reasoningStatusRatio);
|
|
7050
|
-
|
|
7051
|
-
|
|
7210
|
+
if (!rewritingSignedPrefix)
|
|
7211
|
+
args.restoreLatestTurnOriginals?.();
|
|
7212
|
+
if (!rewritingSignedPrefix && args.restoreLatestTurnOriginals) {
|
|
7052
7213
|
refreshReasoningRemovalUnion();
|
|
7053
7214
|
if (replayCommittedVisibleDrops()) {
|
|
7054
7215
|
finalizeMessageRepresentation2(args.messages, args.resolvedProviderID, finalizeOptions);
|
|
@@ -7172,7 +7333,8 @@ async function runPostTransformPhase2(args) {
|
|
|
7172
7333
|
bustedThisPass,
|
|
7173
7334
|
prefixTrimStatus: deliveredPrefix?.prefixTrimStatus ?? null,
|
|
7174
7335
|
thinkingBindingRecovery,
|
|
7175
|
-
proactiveThinkingStrip
|
|
7336
|
+
proactiveThinkingStrip,
|
|
7337
|
+
thinkingReleasedForFit
|
|
7176
7338
|
};
|
|
7177
7339
|
}
|
|
7178
7340
|
function checkM0MutationDriftAndSignal2(args) {
|
|
@@ -7187,4 +7349,4 @@ function checkM0MutationDriftAndSignal2(args) {
|
|
|
7187
7349
|
return false;
|
|
7188
7350
|
}
|
|
7189
7351
|
|
|
7190
|
-
export { createTagger, cavemanWordRulesForLanguage, searchMessageHistoryOffThread, findSessionId, findLastUserMessageId, clearAutoSearchForSession, setCtxReduceRegisteredGlobally, resolveCtxReduceAvailabilityFromMessages, resolveCtxReduceAvailability, primeCtxReduceSpawnPermission, ctxReduceSpawnPermissionReadNeeded, spawnAgentFromMessages, spawnAgentFromOpenCodeDb, todowritePermissionDenied, cachedToolPermissionDenied, clearToolPermissionDenied, resolveTodowriteAvailabilityFromMessages, resolveTodowriteAvailability, canConsumeDeferredOnThisPass, hasReclaimRide, reclaimRideLabel, replayClearedReasoning, replayStrippedInlineThinking, stripClearedReasoning, snapshotTrailingBlankSourceDecisions, projectOpencodeReasoningBudgetCutoff, resolveKeepReasoningTokens, reasoningBudgetCutoff, captureOpencodeReasoningBudgetStatus, reasoningBudgetStatusLine, ENGINE_RECONNECTING_USER_MESSAGE, contextRefusalError, protectedToolRefusal, outgoingContextRefusal, EmergencyFailClosedError, latestAssistantTurnStart, latestAssistantTurnMessages, hasActiveAnthropicThinkingTurn, replayCavemanCompression, DegradedPassRefusalError, degradedPassError, applyFlushedStatuses, prewarmTagOwners, waitForTagOwners, stripStructuralNoise, logTransformTiming, hasRecentAssistantCommit, tagMessages, resetDegradedCacheCount2, isSyntheticHeadMessage2, applyTodoSynthesis2, freezeReasoningOnBustingPass2, firstServedDivergenceIndex2, rustModeServedKeyAfterPersistedStrips2, replayRustModeBindingMismatchStrips2, RUST_MARKER_LOCK_SKIP_LOG2, applyRustModeDeferredCompactionMarker2, clearRustModeBoundaryRecord2, runRustModePostprocess2, reconcileMarkerRepresentation2, clearPendingCompactionMarkerAfterSuccessfulDrain2, defaultCompactionMarkerStrategy2, abortSessionFailClosed2, evaluateEmergencyFailClosed2, finalizeMessageRepresentation2, runPostTransformPhase2, checkM0MutationDriftAndSignal2 };
|
|
7352
|
+
export { createTagger, cavemanWordRulesForLanguage, searchMessageHistoryOffThread, findSessionId, findLastUserMessageId, clearAutoSearchForSession, setCtxReduceRegisteredGlobally, resolveCtxReduceAvailabilityFromMessages, resolveCtxReduceAvailability, primeCtxReduceSpawnPermission, ctxReduceSpawnPermissionReadNeeded, spawnAgentFromMessages, spawnAgentFromOpenCodeDb, todowritePermissionDenied, cachedToolPermissionDenied, clearToolPermissionDenied, resolveTodowriteAvailabilityFromMessages, resolveTodowriteAvailability, canConsumeDeferredOnThisPass, hasReclaimRide, reclaimRideLabel, replayClearedReasoning, replayStrippedInlineThinking, stripClearedReasoning, findReasoningBearingAssistantIds, snapshotTrailingBlankSourceDecisions, projectOpencodeReasoningBudgetCutoff, resolveKeepReasoningTokens, reasoningBudgetCutoff, captureOpencodeReasoningBudgetStatus, reasoningBudgetStatusLine, ENGINE_RECONNECTING_USER_MESSAGE, ENGINE_BUSY_USER_MESSAGE, SIGNED_THINKING_RESET_FENCE_FAILED, contextRefusalError, protectedToolRefusal, outgoingContextRefusal, signedTurnContextRefusal, EmergencyFailClosedError, latestAssistantTurnStart, latestAssistantTurnMessages, hasActiveAnthropicThinkingTurn, replayCavemanCompression, DegradedPassRefusalError, degradedPassError, applyFlushedStatuses, prewarmTagOwners, waitForTagOwners, stripStructuralNoise, logTransformTiming, hasRecentAssistantCommit, tagMessages, resetDegradedCacheCount2, isSyntheticHeadMessage2, applyTodoSynthesis2, freezeReasoningOnBustingPass2, firstServedDivergenceIndex2, rustModeServedKeyAfterPersistedStrips2, replayRustModeBindingMismatchStrips2, RUST_MARKER_LOCK_SKIP_LOG2, applyRustModeDeferredCompactionMarker2, clearRustModeBoundaryRecord2, runRustModePostprocess2, reconcileMarkerRepresentation2, clearPendingCompactionMarkerAfterSuccessfulDrain2, defaultCompactionMarkerStrategy2, abortSessionFailClosed2, evaluateEmergencyFailClosed2, finalizeMessageRepresentation2, runPostTransformPhase2, checkM0MutationDriftAndSignal2 };
|