@cortexkit/opencode-magic-context 0.49.14 → 0.49.15
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/{context-cpxqpkzv.js → context-0m46day0.js} +106 -8
- package/dist/features/magic-context/dreamer/verify.d.ts +22 -3
- package/dist/features/magic-context/dreamer/verify.d.ts.map +1 -1
- package/dist/hooks/magic-context/compartment-runner-types.d.ts +2 -2
- package/dist/hooks/magic-context/compartment-runner-types.d.ts.map +1 -1
- package/dist/hooks/magic-context/compartment-runner-validation.d.ts.map +1 -1
- package/dist/hooks/magic-context/historian-prompt.generated.d.ts +1 -1
- package/dist/hooks/magic-context/historian-prompt.generated.d.ts.map +1 -1
- package/dist/{index-kf4epshg.js → index-1vc7jrkg.js} +1 -1
- package/dist/{index-5591fg8y.js → index-42vcjcwe.js} +15 -6
- package/dist/{index-tyckte5c.js → index-mc1cqza6.js} +2 -2
- package/dist/{index-t4q9zbbf.js → index-snp5wbge.js} +94 -7
- package/dist/{index-w900fbhd.js → index-ts1hjk1h.js} +1 -1
- package/dist/index.js +8 -8
- package/dist/{recomp-orchestrator-xqb9gwgm.js → recomp-orchestrator-nwzcfhx4.js} +2 -2
- package/dist/{transform-postprocess-phase-k5t63qm5.js → transform-postprocess-phase-ne3z1zmt.js} +2 -2
- package/dist/v2/{context-k4jrq71s.js → context-4qczzck7.js} +115 -8
- package/dist/v2/hidden-completion.d.ts +20 -1
- package/dist/v2/hidden-completion.d.ts.map +1 -1
- package/dist/v2/hooks/context.d.ts.map +1 -1
- package/dist/v2/hooks/hidden-child.d.ts +19 -0
- package/dist/v2/hooks/hidden-child.d.ts.map +1 -1
- package/dist/v2/{recomp-orchestrator-1j1nqrrr.js → recomp-orchestrator-5zhxtwha.js} +1 -1
- package/dist/v2/{server-fnqxt9j6.js → server-dd0tz6cn.js} +94 -7
- package/dist/v2/server.js +2 -2
- package/dist/v2/store-reader.d.ts +27 -1
- package/dist/v2/store-reader.d.ts.map +1 -1
- package/dist/v2/{wrapup-orchestrator-hkv8apcc.js → wrapup-orchestrator-65pwye0d.js} +1 -1
- package/dist/{wrapup-orchestrator-kxqj4rwh.js → wrapup-orchestrator-28xzsj5q.js} +3 -3
- package/package.json +1 -1
|
@@ -3482,6 +3482,7 @@ Examples:
|
|
|
3482
3482
|
- Every displayed raw message ordinal MUST appear in exactly one compartment. Gaps between compartments are invalid. When a displayed block is pure tool-only noise with no narrative text, do NOT skip it — extend the preceding compartment's \`end\` to absorb the range, or fold it into the current compartment if it's part of an ongoing work unit. Never create a dedicated compartment just to cover a tool-only run.
|
|
3483
3483
|
- If a chunk is entirely tool-only with no narrative text (a long autonomous coding stretch), produce a single compartment whose narrative is derived from what the tools collectively accomplished.
|
|
3484
3484
|
- If the chunk ends mid-topic, leave the unfinished portion out and report its first message index in \`<unprocessed_from>\`.
|
|
3485
|
+
- If every message in the chunk is covered by a compartment, nothing is unprocessed: set \`<unprocessed_from>\` to the chunk's last message index + 1. Never write \`0\` or the last covered index in that case.
|
|
3485
3486
|
|
|
3486
3487
|
---
|
|
3487
3488
|
|
|
@@ -5129,6 +5130,9 @@ class V2StoreReaderPool {
|
|
|
5129
5130
|
capacity;
|
|
5130
5131
|
connections = new Map;
|
|
5131
5132
|
closed = false;
|
|
5133
|
+
closing = false;
|
|
5134
|
+
holds = 0;
|
|
5135
|
+
idleWaiters = new Set;
|
|
5132
5136
|
constructor(capacity = 4) {
|
|
5133
5137
|
this.capacity = capacity;
|
|
5134
5138
|
if (!Number.isSafeInteger(capacity) || capacity < 1)
|
|
@@ -5173,13 +5177,63 @@ class V2StoreReaderPool {
|
|
|
5173
5177
|
if (connection.leases === 0)
|
|
5174
5178
|
closeConnection(connection);
|
|
5175
5179
|
}
|
|
5180
|
+
hold() {
|
|
5181
|
+
if (this.closed || this.closing)
|
|
5182
|
+
throw new Error("Store reader pool is closed");
|
|
5183
|
+
this.holds++;
|
|
5184
|
+
let released = false;
|
|
5185
|
+
return () => {
|
|
5186
|
+
if (released)
|
|
5187
|
+
return;
|
|
5188
|
+
released = true;
|
|
5189
|
+
this.holds--;
|
|
5190
|
+
if (this.holds === 0 && this.closing)
|
|
5191
|
+
this.finishClose();
|
|
5192
|
+
};
|
|
5193
|
+
}
|
|
5194
|
+
isClosed() {
|
|
5195
|
+
return this.closed;
|
|
5196
|
+
}
|
|
5197
|
+
holdCount() {
|
|
5198
|
+
return this.holds;
|
|
5199
|
+
}
|
|
5176
5200
|
close() {
|
|
5201
|
+
if (this.closed || this.closing)
|
|
5202
|
+
return;
|
|
5203
|
+
this.closing = true;
|
|
5204
|
+
if (this.holds === 0)
|
|
5205
|
+
this.finishClose();
|
|
5206
|
+
}
|
|
5207
|
+
async closeWhenIdle(timeoutMs) {
|
|
5208
|
+
this.close();
|
|
5209
|
+
if (this.closed)
|
|
5210
|
+
return true;
|
|
5211
|
+
let timer;
|
|
5212
|
+
let waiter;
|
|
5213
|
+
try {
|
|
5214
|
+
await new Promise((resolve) => {
|
|
5215
|
+
waiter = resolve;
|
|
5216
|
+
this.idleWaiters.add(resolve);
|
|
5217
|
+
timer = setTimeout(resolve, Math.max(0, timeoutMs));
|
|
5218
|
+
});
|
|
5219
|
+
} finally {
|
|
5220
|
+
if (timer)
|
|
5221
|
+
clearTimeout(timer);
|
|
5222
|
+
if (waiter)
|
|
5223
|
+
this.idleWaiters.delete(waiter);
|
|
5224
|
+
}
|
|
5225
|
+
return this.closed;
|
|
5226
|
+
}
|
|
5227
|
+
finishClose() {
|
|
5177
5228
|
if (this.closed)
|
|
5178
5229
|
return;
|
|
5179
5230
|
this.closed = true;
|
|
5180
5231
|
for (const connection of this.connections.values())
|
|
5181
5232
|
this.retire(connection);
|
|
5182
5233
|
this.connections.clear();
|
|
5234
|
+
for (const resolve of this.idleWaiters)
|
|
5235
|
+
resolve();
|
|
5236
|
+
this.idleWaiters.clear();
|
|
5183
5237
|
}
|
|
5184
5238
|
}
|
|
5185
5239
|
|
|
@@ -8966,6 +9020,28 @@ function hiddenToolLoop(identity) {
|
|
|
8966
9020
|
function hiddenAgentAllowedTools(agent) {
|
|
8967
9021
|
return agent !== undefined && Object.hasOwn(AGENT_TOOLS, agent) ? AGENT_TOOLS[agent] : undefined;
|
|
8968
9022
|
}
|
|
9023
|
+
var HIDDEN_RUN_DISPOSED_REASON = "the Magic Context plugin instance that started this hidden run was disposed (OpenCode reloaded the plugin), so the run was cancelled; the work is retried on a later run";
|
|
9024
|
+
var DISPOSED_CHILDREN_KEY = Symbol.for("@cortexkit/magic-context/v2/disposed-hidden-children");
|
|
9025
|
+
var DISPOSED_CHILDREN_LIMIT = 512;
|
|
9026
|
+
function disposedChildren() {
|
|
9027
|
+
const store = globalThis;
|
|
9028
|
+
store[DISPOSED_CHILDREN_KEY] ??= new Set;
|
|
9029
|
+
return store[DISPOSED_CHILDREN_KEY];
|
|
9030
|
+
}
|
|
9031
|
+
function noteChildOfDisposedInstance(sessionID) {
|
|
9032
|
+
const children = disposedChildren();
|
|
9033
|
+
children.delete(sessionID);
|
|
9034
|
+
children.add(sessionID);
|
|
9035
|
+
while (children.size > DISPOSED_CHILDREN_LIMIT) {
|
|
9036
|
+
const oldest = children.values().next().value;
|
|
9037
|
+
if (oldest === undefined)
|
|
9038
|
+
break;
|
|
9039
|
+
children.delete(oldest);
|
|
9040
|
+
}
|
|
9041
|
+
}
|
|
9042
|
+
function isChildOfDisposedInstance(sessionID) {
|
|
9043
|
+
return disposedChildren().has(sessionID);
|
|
9044
|
+
}
|
|
8969
9045
|
function hiddenChildPermissions(agent, providerID) {
|
|
8970
9046
|
const tools = AGENT_TOOLS[agent] ?? [];
|
|
8971
9047
|
const visible = tools.length === 0 && needsBlockedRead(agent, providerID) ? ["read"] : tools;
|
|
@@ -8997,6 +9073,8 @@ async function registerHiddenChildAgents(agent) {
|
|
|
8997
9073
|
}
|
|
8998
9074
|
function hiddenToolCallRefusal(call, hook) {
|
|
8999
9075
|
const owned = hook.owns(call.sessionID);
|
|
9076
|
+
if (!owned && isChildOfDisposedInstance(call.sessionID))
|
|
9077
|
+
return `Magic Context hidden child ${call.sessionID} refused: ${HIDDEN_RUN_DISPOSED_REASON}; ${call.tool} refused`;
|
|
9000
9078
|
const agent = owned ? hook.agentFor(call.sessionID) ?? call.agent : call.agent;
|
|
9001
9079
|
const allowed = hiddenAgentAllowedTools(agent);
|
|
9002
9080
|
if (allowed === undefined) {
|
|
@@ -9126,6 +9204,9 @@ class HiddenChildHook {
|
|
|
9126
9204
|
}
|
|
9127
9205
|
compactionSummary(sessionID, agent) {
|
|
9128
9206
|
if (!this.owns(sessionID)) {
|
|
9207
|
+
if (isChildOfDisposedInstance(sessionID)) {
|
|
9208
|
+
this.refuse(`Refusing to compact a Magic Context hidden child of a disposed plugin instance: ${HIDDEN_RUN_DISPOSED_REASON}`, { sessionID, messages: [] }, undefined, undefined, "hidden_instance_disposed");
|
|
9209
|
+
}
|
|
9129
9210
|
if (hiddenAgentAllowedTools(agent) !== undefined) {
|
|
9130
9211
|
this.refuse("Refusing to compact a Magic Context hidden-agent session this instance did not register", { sessionID, messages: [] }, undefined);
|
|
9131
9212
|
}
|
|
@@ -9140,7 +9221,7 @@ class HiddenChildHook {
|
|
|
9140
9221
|
}
|
|
9141
9222
|
return marker;
|
|
9142
9223
|
}
|
|
9143
|
-
refuse(reason, draft, raw, inFlight) {
|
|
9224
|
+
refuse(reason, draft, raw, inFlight, code = "hidden_prompt_unrecognized") {
|
|
9144
9225
|
const registered = [...this.attempts.values()].filter((attempt) => attempt.childSessionId === draft.sessionID && attempt.marker).map((attempt) => {
|
|
9145
9226
|
const marker = attempt.marker;
|
|
9146
9227
|
return {
|
|
@@ -9161,7 +9242,7 @@ class HiddenChildHook {
|
|
|
9161
9242
|
active: this.active.has(draft.sessionID),
|
|
9162
9243
|
...inFlight === undefined ? {} : { in_flight: inFlight }
|
|
9163
9244
|
})}`);
|
|
9164
|
-
const refusal = new HiddenCompletionRefusal(
|
|
9245
|
+
const refusal = new HiddenCompletionRefusal(code, reason, true);
|
|
9165
9246
|
for (const attempt of this.attempts.values()) {
|
|
9166
9247
|
if (attempt.childSessionId === draft.sessionID)
|
|
9167
9248
|
attempt.refusal = refusal;
|
|
@@ -9176,6 +9257,9 @@ class HiddenChildHook {
|
|
|
9176
9257
|
}
|
|
9177
9258
|
apply(draft) {
|
|
9178
9259
|
if (!this.owns(draft.sessionID)) {
|
|
9260
|
+
if (isChildOfDisposedInstance(draft.sessionID)) {
|
|
9261
|
+
this.refuse(`Refusing a turn of a Magic Context hidden child of a disposed plugin instance: ${HIDDEN_RUN_DISPOSED_REASON}`, draft, newestUserText(draft), undefined, "hidden_instance_disposed");
|
|
9262
|
+
}
|
|
9179
9263
|
if (hiddenAgentAllowedTools(draft.agent) !== undefined) {
|
|
9180
9264
|
this.refuse("Refusing a Magic Context hidden-agent turn this instance did not register", draft, newestUserText(draft));
|
|
9181
9265
|
}
|
|
@@ -10701,16 +10785,19 @@ function validateParsedCompartments(compartments, chunkStart, chunkEnd, unproces
|
|
|
10701
10785
|
expectedStart = compartment.endMessage + 1;
|
|
10702
10786
|
}
|
|
10703
10787
|
if (unprocessedFrom !== null) {
|
|
10788
|
+
if (expectedStart <= chunkEnd) {
|
|
10789
|
+
if (unprocessedFrom !== expectedStart) {
|
|
10790
|
+
return `<unprocessed_from> ${unprocessedFrom} does not match next uncovered message ${expectedStart}`;
|
|
10791
|
+
}
|
|
10792
|
+
return null;
|
|
10793
|
+
}
|
|
10704
10794
|
if (unprocessedFrom === chunkEnd + 1) {
|
|
10705
10795
|
return null;
|
|
10706
10796
|
}
|
|
10707
10797
|
if (unprocessedFrom < chunkStart || unprocessedFrom > chunkEnd) {
|
|
10708
10798
|
return `<unprocessed_from> ${unprocessedFrom} is outside chunk ${chunkStart}-${chunkEnd}`;
|
|
10709
10799
|
}
|
|
10710
|
-
|
|
10711
|
-
return `<unprocessed_from> ${unprocessedFrom} does not match next uncovered message ${expectedStart}`;
|
|
10712
|
-
}
|
|
10713
|
-
return null;
|
|
10800
|
+
return `<unprocessed_from> ${unprocessedFrom} does not match completed chunk boundary ${chunkEnd + 1}`;
|
|
10714
10801
|
}
|
|
10715
10802
|
if (expectedStart <= chunkEnd) {
|
|
10716
10803
|
return `output left uncovered messages ${expectedStart}-${chunkEnd} without <unprocessed_from>`;
|
|
@@ -21842,4 +21929,4 @@ async function executeContextRecomp(deps, options = {}) {
|
|
|
21842
21929
|
return (await executeContextRecompWithResult(deps, options)).message;
|
|
21843
21930
|
}
|
|
21844
21931
|
|
|
21845
|
-
export { denyTaskRoutingToCallerAgents, buildHiddenAgentRegistrations, buildZenReadAgentRegistrations, buildHiddenAgentConfig, getMagicContextBuiltinCommands, formatConfigParseStatusLine, claimConfigParseFailuresOnce, cortexKitUserConfigBasePath, cortexKitProjectConfigBasePath, resolveLegacyConfigSources, migrateMagicContextConfigLocations, getProtectedTokensTierOverrides, loadPluginConfigDetailed, historianRunConfig, dreamerRunConfig, pluginConfigReader, currentPluginConfigReader, withLiveDreamerOutputCap, createDreamerOutputCapSampler, COMPARTMENT_AGENT_SYSTEM_PROMPT, HISTORIAN_EDITOR_SYSTEM_PROMPT, COMPARTMENT_STRUCTURAL_SYSTEM_PROMPT, clampProducerAtomChars, producerInputTokenLimit, historianProducerReserve, producerPromptFailureReason, DREAMER_AGENT, DREAMER_RETROSPECTIVE_AGENT, DREAMER_PRIMER_INVESTIGATOR_AGENT, DREAMER_MEMORY_MAPPER_AGENT, DREAMER_CLASSIFIER_AGENT, DREAMER_DOCS_AGENT, DREAMER_REVIEWER_AGENT, COMPARTMENT_LEASE_RENEWAL_MS, acquireCompartmentLease, renewCompartmentLease, releaseCompartmentLeaseBestEffort, isCompartmentLeaseHeld, queueM0Mutation, getMaxM0MutationId, getCompartments, getLastCompartmentEndMessage, getLastCompartmentEndMessageId, getUncoveredCompartmentEndsThrough, providerResponseFailed, isSuccessfulProviderCompletion, rememberUnpublishedAutoSearchNoHint, getUnpublishedAutoSearchNoHint, forgetUnpublishedAutoSearchNoHint, registerAutoSearchWork, cancelAutoSearchWork, gaDatabasePath, RAW_MESSAGE_TYPES, V2StoreReaderPool, V2StoreReader, getOrCreateSessionMeta, updateSessionMeta, advanceToolReclaimWatermark, markSessionCleanupPending, retryPendingSessionCleanups, retryPendingRustSessionCleanupsForProject, clearSession, requestPendingMaterialization, pendingMaterializationOrigin, hasPendingMaterializationOrigin, clearPendingMaterialization, recordSystemPromptForRequest, recordHeldHeadForRequest, bindSystemPromptResponse, isHeldHeadForRequest, deferDeliveredSystemRefresh, retirePendingSystemPromptDelivery, lkgProviderInputTotal, beginV2LkgRequest, claimLkgRequestIdentity, currentLkgRequestIdentity, noteCapturedLkgRequest, noteLkgProviderResponse, measuredLkgPrefix, clearLkgMeasuredRequest, saveLkgSlotToDb, clearPersistedLkgSlotStrict, loadPersistedLkgSlot, drainStaleLkgSlots, createDbLkgPersistence, resolveLkgModelKeys, createLkgEntryProjector, captureLkgSlot, validateAnthropicReasoningRuns, validateLkgSeam, replayLkg, coldStartRawServedIndex, coldStartUncapturedReplay, noteUncertifiedNormalLkg, hasProcessLocalLkgProof, lkgDirtyRevision, rememberLkgDirtyRevision, noteLkgRecoveryPrefix, readLkgRecoveryPrefix, noteLkgHealthyPrefix, lkgRecoveryReplayUnproven, lkgRecoveryEntryUnproven, registerLkgPersistence, beginLkgPass, visitMessageContentFields, contentSnapshotValue, messageContentFields, signatureForFields, exactReusablePrefix, incrementalLkgContentDigests, lkgSlotRejection, captureSlot, getInMemorySlot, getSlot, forgetInMemorySlot, dropSlot, noteEntry, getLkgSlotHeapStats, TOOL_SWEEP_SCOPED_MARKER, useScopedToolSweep, createPreAdoptionToolSweepResolver, copySessionStateForClone, queueMemoryMutation, getMaxMemoryMutationIdForProjects, GLOBAL_USER_PROFILE_PROJECT_PATH, getProjectState, bumpProjectUserProfileVersion, saveSourceContent, replaceSourceContent, getSourceContents, createChildSessionWithFence, HiddenCompletionRefusal, DreamerProviderOutputFailureError, withDreamerModelCooldown, providerOutputFailureFromInvalidManifest, HIDDEN_HISTORIAN_AGENT, HIDDEN_DREAMER_AGENT, HIDDEN_CURATE_AGENT, hiddenAgentFor, hiddenToolLoop, hiddenChildPermissions, registerHiddenChildAgents, hiddenToolCallRefusal, HiddenAgentStepLimit, HiddenChildHook, extractLatestAssistantText, hasLengthCappedOutput, parseProviderModel, modelBodyField, toModelEntry, isPromptTimeoutError, getPromptFailureDetail, raceWithSignal, promptSyncWithValidatedOutputRetry, normalizeSDKResponse, failedInvocationStatus, sumTokensFromChildMessages, recordChildInvocation, recordPromptSessionError, createPromptAsyncTransport, CTX_NOTE_LIGHT_DESCRIPTION, ACTIVE_TOOL_IDS, systemPromptFingerprint, createPromptSurfaceRuntime, createPromptSurfaceGuidanceEpochCache, setKeepSubagents, teardownChildSession, getCompartmentEvents, runTokenLog, formatRunTokenLog, buildMagicContextSection, getMuralIdentity, getMural, modelKeyAcceptsImages, resolveMuralWire, USER_MEMORY_CANDIDATE_TTL_MS, insertUserMemoryCandidates, getUserMemoryCandidates, deleteUserMemoryCandidates, pruneExpiredUserMemoryCandidates, insertUserMemory, getActiveUserMemories, updateUserMemoryContent, dismissUserMemory, getOpenCodeDbPath, compareOpenCodeMessagesByCanonicalOrder, prepareCompactionMarkerCandidates, removeMcOwnedCompactionMarkers, MARKER_SUMMARY_TEXT, markerUpdateDefinitelyDidNotCut, applyDeferredCompactionMarker, removeCompactionMarkerForSession, checkCompactionMarkerConsistency, extractM0Block, formatDate, TEMPORAL_MARKER_REPLAY_PATTERN, collectTemporalCandidates, injectTemporalMarkers, clearInjectionCache, getVisibleMemoryIds, selectHiddenMessagesAtCompactionSeam, prepareCompartmentInjection, renderCompartmentInjection, MaterializeContentionError, mustMaterialize, trimMemoriesToBudgetV2, renderMemoryBlockV2, materializeM0, hydrateCachedM0Mural, resetPrefixTrimFallbackState, findHostCompactionWindow, capturePrefixTrimSourceOrder, prepareCachedM0M1Replay, hasCompleteCachedM0M1, injectM0M1, resolveHiddenCompletionExecutor, createV1HiddenCompletionExecutor, readCoordinateGeneration, readCoordinateRebaseNotice, formatCoordinateRebaseNotice, rebaseSessionCoordinatesAsync, EMPTY_READ_REPLY, noteTouchedAt, renderGlance, renderNotesById, formatWriteReply, observeNoteNudgeServe, onNoteTrigger, peekNoteNudgeText, markNoteNudgeDelivered, clearNoteNudgeTriggerAndCooldown, resetNoteNudgeCooldownOnly, clearNoteNudgeTriggerOnly, describeBoundaryDiagnostics, RECOVERY_NO_HEAD_LIMIT, deriveProtectedTailTokenTarget, selectPerRunCap, resolveOpenCodeProtectedTailBoundary, resolveWrapupProtectedTailBoundary, getRawHistoryEligibility, hasRunnableCompartmentWindow, recordHighPressureNoEligibleHead, noteTransformPassForExactOrdinalReads, runCompartmentAgent, snapRangeToCompartments, getActiveCompartmentRun, markActiveCompartmentRunPublished, registerActiveCompartmentRun, startCompartmentAgent, executeContextRecomp };
|
|
21932
|
+
export { denyTaskRoutingToCallerAgents, buildHiddenAgentRegistrations, buildZenReadAgentRegistrations, buildHiddenAgentConfig, getMagicContextBuiltinCommands, formatConfigParseStatusLine, claimConfigParseFailuresOnce, cortexKitUserConfigBasePath, cortexKitProjectConfigBasePath, resolveLegacyConfigSources, migrateMagicContextConfigLocations, getProtectedTokensTierOverrides, loadPluginConfigDetailed, historianRunConfig, dreamerRunConfig, pluginConfigReader, currentPluginConfigReader, withLiveDreamerOutputCap, createDreamerOutputCapSampler, COMPARTMENT_AGENT_SYSTEM_PROMPT, HISTORIAN_EDITOR_SYSTEM_PROMPT, COMPARTMENT_STRUCTURAL_SYSTEM_PROMPT, clampProducerAtomChars, producerInputTokenLimit, historianProducerReserve, producerPromptFailureReason, DREAMER_AGENT, DREAMER_RETROSPECTIVE_AGENT, DREAMER_PRIMER_INVESTIGATOR_AGENT, DREAMER_MEMORY_MAPPER_AGENT, DREAMER_CLASSIFIER_AGENT, DREAMER_DOCS_AGENT, DREAMER_REVIEWER_AGENT, COMPARTMENT_LEASE_RENEWAL_MS, acquireCompartmentLease, renewCompartmentLease, releaseCompartmentLeaseBestEffort, isCompartmentLeaseHeld, queueM0Mutation, getMaxM0MutationId, getCompartments, getLastCompartmentEndMessage, getLastCompartmentEndMessageId, getUncoveredCompartmentEndsThrough, providerResponseFailed, isSuccessfulProviderCompletion, rememberUnpublishedAutoSearchNoHint, getUnpublishedAutoSearchNoHint, forgetUnpublishedAutoSearchNoHint, registerAutoSearchWork, cancelAutoSearchWork, gaDatabasePath, RAW_MESSAGE_TYPES, V2StoreReaderPool, V2StoreReader, getOrCreateSessionMeta, updateSessionMeta, advanceToolReclaimWatermark, markSessionCleanupPending, retryPendingSessionCleanups, retryPendingRustSessionCleanupsForProject, clearSession, requestPendingMaterialization, pendingMaterializationOrigin, hasPendingMaterializationOrigin, clearPendingMaterialization, recordSystemPromptForRequest, recordHeldHeadForRequest, bindSystemPromptResponse, isHeldHeadForRequest, deferDeliveredSystemRefresh, retirePendingSystemPromptDelivery, lkgProviderInputTotal, beginV2LkgRequest, claimLkgRequestIdentity, currentLkgRequestIdentity, noteCapturedLkgRequest, noteLkgProviderResponse, measuredLkgPrefix, clearLkgMeasuredRequest, saveLkgSlotToDb, clearPersistedLkgSlotStrict, loadPersistedLkgSlot, drainStaleLkgSlots, createDbLkgPersistence, resolveLkgModelKeys, createLkgEntryProjector, captureLkgSlot, validateAnthropicReasoningRuns, validateLkgSeam, replayLkg, coldStartRawServedIndex, coldStartUncapturedReplay, noteUncertifiedNormalLkg, hasProcessLocalLkgProof, lkgDirtyRevision, rememberLkgDirtyRevision, noteLkgRecoveryPrefix, readLkgRecoveryPrefix, noteLkgHealthyPrefix, lkgRecoveryReplayUnproven, lkgRecoveryEntryUnproven, registerLkgPersistence, beginLkgPass, visitMessageContentFields, contentSnapshotValue, messageContentFields, signatureForFields, exactReusablePrefix, incrementalLkgContentDigests, lkgSlotRejection, captureSlot, getInMemorySlot, getSlot, forgetInMemorySlot, dropSlot, noteEntry, getLkgSlotHeapStats, TOOL_SWEEP_SCOPED_MARKER, useScopedToolSweep, createPreAdoptionToolSweepResolver, copySessionStateForClone, queueMemoryMutation, getMaxMemoryMutationIdForProjects, GLOBAL_USER_PROFILE_PROJECT_PATH, getProjectState, bumpProjectUserProfileVersion, saveSourceContent, replaceSourceContent, getSourceContents, createChildSessionWithFence, HiddenCompletionRefusal, DreamerProviderOutputFailureError, withDreamerModelCooldown, providerOutputFailureFromInvalidManifest, HIDDEN_HISTORIAN_AGENT, HIDDEN_DREAMER_AGENT, HIDDEN_CURATE_AGENT, hiddenAgentFor, hiddenToolLoop, HIDDEN_RUN_DISPOSED_REASON, noteChildOfDisposedInstance, hiddenChildPermissions, registerHiddenChildAgents, hiddenToolCallRefusal, HiddenAgentStepLimit, HiddenChildHook, extractLatestAssistantText, hasLengthCappedOutput, parseProviderModel, modelBodyField, toModelEntry, isPromptTimeoutError, getPromptFailureDetail, raceWithSignal, promptSyncWithValidatedOutputRetry, normalizeSDKResponse, failedInvocationStatus, sumTokensFromChildMessages, recordChildInvocation, recordPromptSessionError, createPromptAsyncTransport, CTX_NOTE_LIGHT_DESCRIPTION, ACTIVE_TOOL_IDS, systemPromptFingerprint, createPromptSurfaceRuntime, createPromptSurfaceGuidanceEpochCache, setKeepSubagents, teardownChildSession, getCompartmentEvents, runTokenLog, formatRunTokenLog, buildMagicContextSection, getMuralIdentity, getMural, modelKeyAcceptsImages, resolveMuralWire, USER_MEMORY_CANDIDATE_TTL_MS, insertUserMemoryCandidates, getUserMemoryCandidates, deleteUserMemoryCandidates, pruneExpiredUserMemoryCandidates, insertUserMemory, getActiveUserMemories, updateUserMemoryContent, dismissUserMemory, getOpenCodeDbPath, compareOpenCodeMessagesByCanonicalOrder, prepareCompactionMarkerCandidates, removeMcOwnedCompactionMarkers, MARKER_SUMMARY_TEXT, markerUpdateDefinitelyDidNotCut, applyDeferredCompactionMarker, removeCompactionMarkerForSession, checkCompactionMarkerConsistency, extractM0Block, formatDate, TEMPORAL_MARKER_REPLAY_PATTERN, collectTemporalCandidates, injectTemporalMarkers, clearInjectionCache, getVisibleMemoryIds, selectHiddenMessagesAtCompactionSeam, prepareCompartmentInjection, renderCompartmentInjection, MaterializeContentionError, mustMaterialize, trimMemoriesToBudgetV2, renderMemoryBlockV2, materializeM0, hydrateCachedM0Mural, resetPrefixTrimFallbackState, findHostCompactionWindow, capturePrefixTrimSourceOrder, prepareCachedM0M1Replay, hasCompleteCachedM0M1, injectM0M1, resolveHiddenCompletionExecutor, createV1HiddenCompletionExecutor, readCoordinateGeneration, readCoordinateRebaseNotice, formatCoordinateRebaseNotice, rebaseSessionCoordinatesAsync, EMPTY_READ_REPLY, noteTouchedAt, renderGlance, renderNotesById, formatWriteReply, observeNoteNudgeServe, onNoteTrigger, peekNoteNudgeText, markNoteNudgeDelivered, clearNoteNudgeTriggerAndCooldown, resetNoteNudgeCooldownOnly, clearNoteNudgeTriggerOnly, describeBoundaryDiagnostics, RECOVERY_NO_HEAD_LIMIT, deriveProtectedTailTokenTarget, selectPerRunCap, resolveOpenCodeProtectedTailBoundary, resolveWrapupProtectedTailBoundary, getRawHistoryEligibility, hasRunnableCompartmentWindow, recordHighPressureNoEligibleHead, noteTransformPassForExactOrdinalReads, runCompartmentAgent, snapRangeToCompartments, getActiveCompartmentRun, markActiveCompartmentRunPublished, registerActiveCompartmentRun, startCompartmentAgent, executeContextRecomp };
|
package/dist/index.js
CHANGED
|
@@ -97,7 +97,7 @@ import {
|
|
|
97
97
|
checkCompactionMarkerConsistency,
|
|
98
98
|
clearInjectionCache,
|
|
99
99
|
clearNoteNudgeTriggerOnly
|
|
100
|
-
} from "./index-
|
|
100
|
+
} from "./index-snp5wbge.js";
|
|
101
101
|
import"./index-sd3egckz.js";
|
|
102
102
|
import {
|
|
103
103
|
hasTrustedAbsoluteWall,
|
|
@@ -185,7 +185,7 @@ import {
|
|
|
185
185
|
parameterDescriptionsFor,
|
|
186
186
|
MagicContextRpcServer,
|
|
187
187
|
applyHiddenSubagentTemperature
|
|
188
|
-
} from "./index-
|
|
188
|
+
} from "./index-42vcjcwe.js";
|
|
189
189
|
import {
|
|
190
190
|
resolveOpenCodeDbPath,
|
|
191
191
|
openCodeDbPathExists,
|
|
@@ -308,10 +308,10 @@ import {
|
|
|
308
308
|
setCtxReduceRegisteredGlobally,
|
|
309
309
|
clearToolPermissionDenied,
|
|
310
310
|
resetDegradedCacheCount2
|
|
311
|
-
} from "./index-
|
|
311
|
+
} from "./index-ts1hjk1h.js";
|
|
312
312
|
import {
|
|
313
313
|
runManagedRecomp2
|
|
314
|
-
} from "./index-
|
|
314
|
+
} from "./index-1vc7jrkg.js";
|
|
315
315
|
import {
|
|
316
316
|
isValidSemver,
|
|
317
317
|
compareSemverCore
|
|
@@ -319,7 +319,7 @@ import {
|
|
|
319
319
|
import"./index-fmsr7v69.js";
|
|
320
320
|
import {
|
|
321
321
|
runManagedWrapup2
|
|
322
|
-
} from "./index-
|
|
322
|
+
} from "./index-mc1cqza6.js";
|
|
323
323
|
import {
|
|
324
324
|
isDreamerRunnable,
|
|
325
325
|
isSmartNoteSurfaceAvailable,
|
|
@@ -8187,7 +8187,7 @@ var require_src2 = __commonJS(function(exports, module) {
|
|
|
8187
8187
|
// package.json
|
|
8188
8188
|
var package_default = {
|
|
8189
8189
|
name: "@cortexkit/opencode-magic-context",
|
|
8190
|
-
version: "0.49.
|
|
8190
|
+
version: "0.49.15",
|
|
8191
8191
|
type: "module",
|
|
8192
8192
|
description: "OpenCode plugin for Magic Context — cross-session memory and context management",
|
|
8193
8193
|
main: "dist/index.js",
|
|
@@ -12033,7 +12033,7 @@ async function setup(context) {
|
|
|
12033
12033
|
if (claimStorageBackupWarningCheck() && isMagicContextStorageOutsideEngram(storageDir)) {
|
|
12034
12034
|
log2(`[magic-context] Magic Context storage is at ${storageDir}, outside the folder Engram backs up (~/.local/share/cortexkit/magic-context). It is not included in CortexKit backups.`);
|
|
12035
12035
|
}
|
|
12036
|
-
const { registerContext } = await import("./context-
|
|
12036
|
+
const { registerContext } = await import("./context-0m46day0.js");
|
|
12037
12037
|
setHarness2("opencode2");
|
|
12038
12038
|
bindStaleBuildNotice({}, import.meta.url, "opencode2");
|
|
12039
12039
|
const duties = await registerContext(context);
|
|
@@ -12510,7 +12510,7 @@ var server = async (ctx) => {
|
|
|
12510
12510
|
rustReplayParticipant: () => magicContextRuntime.magicContext?.getRustReplayParticipant?.() ?? null,
|
|
12511
12511
|
onStorageBusyRefusal: async (sessionId, message) => {
|
|
12512
12512
|
const { sendStatusNotification } = await importPluginModule(() => import("./send-session-notification-24r4esbh.js"));
|
|
12513
|
-
const { abortSessionFailClosed } = await importPluginModule(() => import("./transform-postprocess-phase-
|
|
12513
|
+
const { abortSessionFailClosed } = await importPluginModule(() => import("./transform-postprocess-phase-ne3z1zmt.js"));
|
|
12514
12514
|
await sendStatusNotification(ctx.client, sessionId, message, {
|
|
12515
12515
|
toastDurationMs: 15000
|
|
12516
12516
|
});
|
|
@@ -7,8 +7,8 @@ import {
|
|
|
7
7
|
setRecompTerminal2,
|
|
8
8
|
buildRecompDeps2,
|
|
9
9
|
runManagedRecomp2
|
|
10
|
-
} from "./index-
|
|
11
|
-
import"./index-
|
|
10
|
+
} from "./index-1vc7jrkg.js";
|
|
11
|
+
import"./index-snp5wbge.js";
|
|
12
12
|
import"./index-f71thw8j.js";
|
|
13
13
|
import"./index-bxdg2nbt.js";
|
|
14
14
|
import"./index-thvnpfsv.js";
|
package/dist/{transform-postprocess-phase-k5t63qm5.js → transform-postprocess-phase-ne3z1zmt.js}
RENAMED
|
@@ -18,8 +18,8 @@ import {
|
|
|
18
18
|
finalizeMessageRepresentation2,
|
|
19
19
|
runPostTransformPhase2,
|
|
20
20
|
checkM0MutationDriftAndSignal2
|
|
21
|
-
} from "./index-
|
|
22
|
-
import"./index-
|
|
21
|
+
} from "./index-ts1hjk1h.js";
|
|
22
|
+
import"./index-snp5wbge.js";
|
|
23
23
|
import"./index-f71thw8j.js";
|
|
24
24
|
import"./index-bxdg2nbt.js";
|
|
25
25
|
import"./index-thvnpfsv.js";
|
|
@@ -195,6 +195,8 @@ import {
|
|
|
195
195
|
HIDDEN_CURATE_AGENT,
|
|
196
196
|
hiddenAgentFor,
|
|
197
197
|
hiddenToolLoop,
|
|
198
|
+
HIDDEN_RUN_DISPOSED_REASON,
|
|
199
|
+
noteChildOfDisposedInstance,
|
|
198
200
|
hiddenChildPermissions,
|
|
199
201
|
registerHiddenChildAgents,
|
|
200
202
|
hiddenToolCallRefusal,
|
|
@@ -281,7 +283,7 @@ import {
|
|
|
281
283
|
startCompartmentAgent,
|
|
282
284
|
setRecompStarting2,
|
|
283
285
|
setRecompTerminal2
|
|
284
|
-
} from "./server-
|
|
286
|
+
} from "./server-dd0tz6cn.js";
|
|
285
287
|
import {
|
|
286
288
|
resolveHistorianModel2
|
|
287
289
|
} from "./server-8cd2j99z.js";
|
|
@@ -22724,7 +22726,7 @@ function registerRpcHandlers(rpcServer, args) {
|
|
|
22724
22726
|
const db = readDatabase();
|
|
22725
22727
|
if (!db)
|
|
22726
22728
|
return { ok: false, error: "db unavailable" };
|
|
22727
|
-
const { runManagedRecomp } = await importPluginModule(() => import("./recomp-orchestrator-
|
|
22729
|
+
const { runManagedRecomp } = await importPluginModule(() => import("./recomp-orchestrator-5zhxtwha.js"));
|
|
22728
22730
|
const { sendIgnoredMessage } = await importPluginModule(() => import("./send-session-notification-8ghn9tnv.js"));
|
|
22729
22731
|
log2(`[rpc] recomp requested for session ${sessionId}`);
|
|
22730
22732
|
if (!args.client && !args.hiddenCompletionExecutor) {
|
|
@@ -22809,7 +22811,7 @@ function registerRpcHandlers(rpcServer, args) {
|
|
|
22809
22811
|
const db = readDatabase();
|
|
22810
22812
|
if (!db)
|
|
22811
22813
|
return { ok: false, error: "db unavailable" };
|
|
22812
|
-
const { runManagedWrapup } = await importPluginModule(() => import("./wrapup-orchestrator-
|
|
22814
|
+
const { runManagedWrapup } = await importPluginModule(() => import("./wrapup-orchestrator-65pwye0d.js"));
|
|
22813
22815
|
const model = liveSessionState.liveModelBySession.get(sessionId);
|
|
22814
22816
|
const contextLimit = model ? resolveContextLimit(model.providerID, model.modelID, { db, sessionID: sessionId }) : 128000;
|
|
22815
22817
|
const ctx = {
|
|
@@ -25613,6 +25615,25 @@ function subagentTemperature(model, metadata, temperature, log) {
|
|
|
25613
25615
|
}
|
|
25614
25616
|
|
|
25615
25617
|
// src/v2/hidden-completion.ts
|
|
25618
|
+
var DEFAULT_DISPOSE_DRAIN_MS = 2000;
|
|
25619
|
+
async function settleWithin(work, ms) {
|
|
25620
|
+
let timer;
|
|
25621
|
+
try {
|
|
25622
|
+
await Promise.race([
|
|
25623
|
+
work.then(() => {
|
|
25624
|
+
return;
|
|
25625
|
+
}, () => {
|
|
25626
|
+
return;
|
|
25627
|
+
}),
|
|
25628
|
+
new Promise((resolve) => {
|
|
25629
|
+
timer = setTimeout(resolve, Math.max(0, ms));
|
|
25630
|
+
})
|
|
25631
|
+
]);
|
|
25632
|
+
} finally {
|
|
25633
|
+
if (timer)
|
|
25634
|
+
clearTimeout(timer);
|
|
25635
|
+
}
|
|
25636
|
+
}
|
|
25616
25637
|
var POLL_INTERVAL_MS = 200;
|
|
25617
25638
|
function modelKey(model) {
|
|
25618
25639
|
return `${model.providerID}/${model.modelID}`;
|
|
@@ -25776,6 +25797,9 @@ function isProviderFailure(error) {
|
|
|
25776
25797
|
}
|
|
25777
25798
|
async function awaitAssistantRow(openReader, readSessionError, localFailure, childID, afterSeq, deadline, signal) {
|
|
25778
25799
|
for (;; ) {
|
|
25800
|
+
const refusedBefore = localFailure();
|
|
25801
|
+
if (refusedBefore)
|
|
25802
|
+
throw refusedBefore;
|
|
25779
25803
|
const { assistant, idle } = withReader(openReader, (reader) => ({
|
|
25780
25804
|
assistant: reader.latestAssistant(childID),
|
|
25781
25805
|
idle: reader.latestIdle(childID)
|
|
@@ -25851,6 +25875,9 @@ async function createV2HiddenCompletionExecutor(host, options) {
|
|
|
25851
25875
|
const generation = options.generation ?? "opencode2";
|
|
25852
25876
|
const roleTails = new Map;
|
|
25853
25877
|
const note = options.log ?? log2;
|
|
25878
|
+
let disposed;
|
|
25879
|
+
const openRuns = new Set;
|
|
25880
|
+
const inFlight = new Set;
|
|
25854
25881
|
const removeSession = host.removeSession;
|
|
25855
25882
|
if (!removeSession)
|
|
25856
25883
|
throw new Error("Magic Context requires OpenCode 2.0.22 session.remove");
|
|
@@ -25945,10 +25972,17 @@ async function createV2HiddenCompletionExecutor(host, options) {
|
|
|
25945
25972
|
return {
|
|
25946
25973
|
capabilities: V2_HIDDEN_EXECUTOR_CAPABILITIES,
|
|
25947
25974
|
async open(identity) {
|
|
25975
|
+
if (disposed)
|
|
25976
|
+
throw disposed;
|
|
25948
25977
|
const role = roleFor(identity);
|
|
25949
|
-
const
|
|
25978
|
+
const releaseStore = options.holdStore?.() ?? (() => {});
|
|
25979
|
+
let releaseRole;
|
|
25950
25980
|
let openedChild;
|
|
25981
|
+
let opened;
|
|
25951
25982
|
try {
|
|
25983
|
+
releaseRole = await acquireRole(role);
|
|
25984
|
+
if (disposed)
|
|
25985
|
+
throw disposed;
|
|
25952
25986
|
await options.ensureAgent?.();
|
|
25953
25987
|
const head = await resolveHead(identity);
|
|
25954
25988
|
const active = await lifecycle.open(identity, role, head);
|
|
@@ -25961,17 +25995,25 @@ async function createV2HiddenCompletionExecutor(host, options) {
|
|
|
25961
25995
|
role,
|
|
25962
25996
|
child: active,
|
|
25963
25997
|
releaseRole,
|
|
25998
|
+
releaseStore,
|
|
25964
25999
|
failed: false,
|
|
25965
26000
|
unsettledFailure: false,
|
|
25966
26001
|
retired: false
|
|
25967
26002
|
};
|
|
25968
26003
|
runs.set(handle, run);
|
|
26004
|
+
opened = run;
|
|
26005
|
+
openRuns.add(run);
|
|
26006
|
+
if (disposed)
|
|
26007
|
+
noteChildOfDisposedInstance(active.id);
|
|
25969
26008
|
await switchChildModel(run, head);
|
|
25970
26009
|
return handle;
|
|
25971
26010
|
} catch (error) {
|
|
25972
26011
|
if (openedChild)
|
|
25973
26012
|
lifecycle.retire(openedChild, "hidden-run-open-failed");
|
|
25974
|
-
|
|
26013
|
+
if (opened)
|
|
26014
|
+
openRuns.delete(opened);
|
|
26015
|
+
releaseRole?.();
|
|
26016
|
+
releaseStore();
|
|
25975
26017
|
throw error;
|
|
25976
26018
|
}
|
|
25977
26019
|
},
|
|
@@ -25979,6 +26021,15 @@ async function createV2HiddenCompletionExecutor(host, options) {
|
|
|
25979
26021
|
const run = runs.get(handle);
|
|
25980
26022
|
if (!run)
|
|
25981
26023
|
throw new Error("Unknown hidden completion run");
|
|
26024
|
+
const refuseDisposed = () => {
|
|
26025
|
+
if (!disposed)
|
|
26026
|
+
return;
|
|
26027
|
+
run.failed = true;
|
|
26028
|
+
run.unsettledFailure = true;
|
|
26029
|
+
retire(run, "plugin-instance-disposed");
|
|
26030
|
+
throw disposed;
|
|
26031
|
+
};
|
|
26032
|
+
refuseDisposed();
|
|
25982
26033
|
if (request.signal?.aborted) {
|
|
25983
26034
|
await interruptAndRetire(run, "aborted-before-prompt");
|
|
25984
26035
|
throw new Error("Hidden completion prompt aborted");
|
|
@@ -26016,6 +26067,7 @@ async function createV2HiddenCompletionExecutor(host, options) {
|
|
|
26016
26067
|
handle.childSessionId = run.child.id;
|
|
26017
26068
|
}
|
|
26018
26069
|
await switchChildModel(run, requested);
|
|
26070
|
+
refuseDisposed();
|
|
26019
26071
|
const baseline = withReader(options.openReader, (reader) => reader.latestSequence(run.child.id));
|
|
26020
26072
|
const marker = `mc:hidden:${crypto.randomUUID()}:${crypto.randomUUID()}`;
|
|
26021
26073
|
run.completion = undefined;
|
|
@@ -26083,6 +26135,28 @@ async function createV2HiddenCompletionExecutor(host, options) {
|
|
|
26083
26135
|
interruptAndRetire(run, "prompt-timeout").finally(() => abortReject(new Error("Hidden completion prompt timed out")));
|
|
26084
26136
|
}, Math.max(0, deadline - Date.now()));
|
|
26085
26137
|
request.signal?.addEventListener("abort", onAbort, { once: true });
|
|
26138
|
+
let settle;
|
|
26139
|
+
const entry = {
|
|
26140
|
+
cancel: async (refusal) => {
|
|
26141
|
+
attempt.refusal ??= refusal;
|
|
26142
|
+
noteChildOfDisposedInstance(run.child.id);
|
|
26143
|
+
try {
|
|
26144
|
+
await interruptAndRetire(run, "plugin-instance-disposed");
|
|
26145
|
+
} catch (error) {
|
|
26146
|
+
note(`[magic-context] hidden child ${run.child.id} could not be interrupted on dispose: ${errorText(error)}`);
|
|
26147
|
+
} finally {
|
|
26148
|
+
abortReject(refusal);
|
|
26149
|
+
}
|
|
26150
|
+
},
|
|
26151
|
+
reject: (refusal) => {
|
|
26152
|
+
attempt.refusal ??= refusal;
|
|
26153
|
+
abortReject(refusal);
|
|
26154
|
+
},
|
|
26155
|
+
settled: new Promise((resolve) => {
|
|
26156
|
+
settle = resolve;
|
|
26157
|
+
})
|
|
26158
|
+
};
|
|
26159
|
+
inFlight.add(entry);
|
|
26086
26160
|
try {
|
|
26087
26161
|
await Promise.race([
|
|
26088
26162
|
host.prompt({ sessionID: run.child.id, text: marker }),
|
|
@@ -26162,6 +26236,8 @@ async function createV2HiddenCompletionExecutor(host, options) {
|
|
|
26162
26236
|
clearInterval(budgetPoll);
|
|
26163
26237
|
request.signal?.removeEventListener("abort", onAbort);
|
|
26164
26238
|
options.hook.releaseAttempt(marker);
|
|
26239
|
+
inFlight.delete(entry);
|
|
26240
|
+
settle();
|
|
26165
26241
|
}
|
|
26166
26242
|
},
|
|
26167
26243
|
async collect(handle) {
|
|
@@ -26185,9 +26261,27 @@ async function createV2HiddenCompletionExecutor(host, options) {
|
|
|
26185
26261
|
}
|
|
26186
26262
|
} finally {
|
|
26187
26263
|
runs.delete(handle);
|
|
26264
|
+
openRuns.delete(run);
|
|
26188
26265
|
run.releaseRole();
|
|
26266
|
+
run.releaseStore();
|
|
26189
26267
|
}
|
|
26190
26268
|
await lifecycle.finish(run.child, run.retired);
|
|
26269
|
+
},
|
|
26270
|
+
async dispose() {
|
|
26271
|
+
disposed ??= new HiddenCompletionRefusal("hidden_instance_disposed", HIDDEN_RUN_DISPOSED_REASON, true);
|
|
26272
|
+
const refusal = disposed;
|
|
26273
|
+
for (const run of openRuns)
|
|
26274
|
+
noteChildOfDisposedInstance(run.child.id);
|
|
26275
|
+
const entries = [...inFlight];
|
|
26276
|
+
if (entries.length === 0)
|
|
26277
|
+
return;
|
|
26278
|
+
note(`[magic-context] plugin instance disposed with ${entries.length} hidden run(s) in flight; cancelling them`);
|
|
26279
|
+
const bound = options.disposeDrainMs ?? DEFAULT_DISPOSE_DRAIN_MS;
|
|
26280
|
+
const deadline = Date.now() + bound;
|
|
26281
|
+
await settleWithin(Promise.allSettled(entries.map((entry) => entry.cancel(refusal))), bound);
|
|
26282
|
+
for (const entry of entries)
|
|
26283
|
+
entry.reject(refusal);
|
|
26284
|
+
await settleWithin(Promise.allSettled(entries.map((entry) => entry.settled)), deadline - Date.now());
|
|
26191
26285
|
}
|
|
26192
26286
|
};
|
|
26193
26287
|
}
|
|
@@ -32510,6 +32604,7 @@ var VERIFY_BATCH_SIZE = 5;
|
|
|
32510
32604
|
var VERIFY_TOKENS_PER_MEMORY = 1e5;
|
|
32511
32605
|
var VERIFY_RUN_TOKEN_BUDGET = 2500000;
|
|
32512
32606
|
var VERIFY_RUN_SLICE_MS = 240000;
|
|
32607
|
+
var VERIFY_IN_FLIGHT_GRACE_MS = 120000;
|
|
32513
32608
|
function verifyBatchTokenBudget(size, configured) {
|
|
32514
32609
|
return Math.min(configured ?? Number.MAX_SAFE_INTEGER, size * VERIFY_TOKENS_PER_MEMORY);
|
|
32515
32610
|
}
|
|
@@ -32596,7 +32691,15 @@ async function runVerifyWithCooldown(args) {
|
|
|
32596
32691
|
const runTokenBudget = Math.min(args.tokenBudget ?? VERIFY_RUN_TOKEN_BUDGET, VERIFY_RUN_TOKEN_BUDGET);
|
|
32597
32692
|
try {
|
|
32598
32693
|
for (let i = 0;i < batches.length; i += 1) {
|
|
32599
|
-
const
|
|
32694
|
+
const now = Date.now();
|
|
32695
|
+
const startCutoff = Math.min(args.deadline, sliceDeadline);
|
|
32696
|
+
const hardStop = Math.min(args.deadline, sliceDeadline + VERIFY_IN_FLIGHT_GRACE_MS);
|
|
32697
|
+
const remainingMs = Math.max(0, hardStop - now);
|
|
32698
|
+
if (now >= startCutoff) {
|
|
32699
|
+
result.stopReason = "deadline";
|
|
32700
|
+
log2(`[dreamer] ${args.forceBroad ? "verify-broad" : "verify"}: stopping before batch ${i + 1}/${batches.length} — the run deadline passed ${now - startCutoff}ms ago`);
|
|
32701
|
+
break;
|
|
32702
|
+
}
|
|
32600
32703
|
if (remainingMs < VERIFY_BATCH_FLOOR_MS) {
|
|
32601
32704
|
result.stopReason = "deadline";
|
|
32602
32705
|
log2(`[dreamer] ${args.forceBroad ? "verify-broad" : "verify"}: stopping before batch ${i + 1}/${batches.length} — remaining budget ${remainingMs}ms is below the ${VERIFY_BATCH_FLOOR_MS}ms batch floor`);
|
|
@@ -51096,6 +51199,7 @@ function persistV2UsageReading(args) {
|
|
|
51096
51199
|
class V2LkgAdmissionReplay extends Error {
|
|
51097
51200
|
}
|
|
51098
51201
|
var HIDDEN_SESSION_ERROR_GRACE_MS = 50;
|
|
51202
|
+
var STORE_POOL_DISPOSE_WAIT_MS = 1000;
|
|
51099
51203
|
function isBlockingV2TransformError(error) {
|
|
51100
51204
|
return error instanceof EmergencyFailClosedError || error instanceof UnresolvedHistoryBoundaryError || error instanceof UnmanagedOverWindowError || error instanceof DegradedPassRefusalError || isFailClosedBlockingError(error);
|
|
51101
51205
|
}
|
|
@@ -51443,7 +51547,8 @@ async function registerContext(context) {
|
|
|
51443
51547
|
ensureAgent: () => hiddenAgentsReady ??= context.agent.reload(),
|
|
51444
51548
|
modelCatalog: () => Promise.resolve(context.model.list()),
|
|
51445
51549
|
historianTemperature: () => config.historian?.temperature,
|
|
51446
|
-
openReader: openStoreReader
|
|
51550
|
+
openReader: openStoreReader,
|
|
51551
|
+
holdStore: () => readerPool.hold()
|
|
51447
51552
|
});
|
|
51448
51553
|
};
|
|
51449
51554
|
const dreamerAtBoot = config.dreamer;
|
|
@@ -52474,6 +52579,7 @@ ${baseline}
|
|
|
52474
52579
|
}, 0));
|
|
52475
52580
|
return {
|
|
52476
52581
|
async dispose() {
|
|
52582
|
+
await hiddenCompletionExecutor?.dispose();
|
|
52477
52583
|
rpcStopped = true;
|
|
52478
52584
|
rpcServer.stop();
|
|
52479
52585
|
transform?.disposeRust();
|
|
@@ -52487,7 +52593,8 @@ ${baseline}
|
|
|
52487
52593
|
release();
|
|
52488
52594
|
rawProviders.clear();
|
|
52489
52595
|
restoredRows.clear();
|
|
52490
|
-
readerPool.
|
|
52596
|
+
if (!await readerPool.closeWhenIdle(STORE_POOL_DISPOSE_WAIT_MS))
|
|
52597
|
+
log2(`[magic-context] v2 store reader pool still held by ${readerPool.holdCount()} hidden run(s) at dispose; it closes when they finish`);
|
|
52491
52598
|
clearSyntheticCandidates(context);
|
|
52492
52599
|
}
|
|
52493
52600
|
};
|
|
@@ -31,6 +31,25 @@ export interface V2HiddenCompletionOptions {
|
|
|
31
31
|
* receive it.
|
|
32
32
|
*/
|
|
33
33
|
historianTemperature?: () => number | undefined;
|
|
34
|
+
/**
|
|
35
|
+
* Keep the store reader pool open for one hidden run; returns its release. The run
|
|
36
|
+
* reads the store from its first attempt until it is closed, so a pool closed in the
|
|
37
|
+
* meantime must wait for it rather than refuse its next read.
|
|
38
|
+
*/
|
|
39
|
+
holdStore?: () => () => void;
|
|
40
|
+
/** Maximum time `dispose` waits for cancelled runs to settle. */
|
|
41
|
+
disposeDrainMs?: number;
|
|
42
|
+
}
|
|
43
|
+
/** The OpenCode 2 executor, plus the cancellation its plugin instance runs on dispose. */
|
|
44
|
+
export interface V2HiddenCompletionExecutor extends HiddenCompletionExecutor {
|
|
45
|
+
/**
|
|
46
|
+
* Cancel every hidden run in flight and refuse new ones, with
|
|
47
|
+
* `HIDDEN_RUN_DISPOSED_REASON`. Each in-flight child is interrupted at the host, so
|
|
48
|
+
* the host stops stepping it before this instance's hooks are removed and the
|
|
49
|
+
* instance that replaces it never receives its turns. Waits at most
|
|
50
|
+
* `disposeDrainMs` for the cancelled attempts to settle.
|
|
51
|
+
*/
|
|
52
|
+
dispose(): Promise<void>;
|
|
34
53
|
}
|
|
35
54
|
/**
|
|
36
55
|
* Rebuild the child's assistant text and tool calls in the host message shape the dreamer validators read
|
|
@@ -60,5 +79,5 @@ export declare const V2_HIDDEN_EXECUTOR_CAPABILITIES: HiddenCompletionExecutor["
|
|
|
60
79
|
* first successful open later reaches them without a restart.
|
|
61
80
|
*/
|
|
62
81
|
export declare function createLateHiddenExecutor(current: () => HiddenCompletionExecutor | undefined): HiddenCompletionExecutor;
|
|
63
|
-
export declare function createV2HiddenCompletionExecutor(host: HiddenChildHost, options: V2HiddenCompletionOptions): Promise<
|
|
82
|
+
export declare function createV2HiddenCompletionExecutor(host: HiddenChildHost, options: V2HiddenCompletionOptions): Promise<V2HiddenCompletionExecutor>;
|
|
64
83
|
//# sourceMappingURL=hidden-completion.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hidden-completion.d.ts","sourceRoot":"","sources":["../../src/v2/hidden-completion.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAER,wBAAwB,EAG3B,MAAM,iDAAiD,CAAC;AASzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGjD,OAAO,EAGH,KAAK,eAAe,EAIpB,KAAK,eAAe,EAGvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,
|
|
1
|
+
{"version":3,"file":"hidden-completion.d.ts","sourceRoot":"","sources":["../../src/v2/hidden-completion.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAER,wBAAwB,EAG3B,MAAM,iDAAiD,CAAC;AASzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGjD,OAAO,EAGH,KAAK,eAAe,EAIpB,KAAK,eAAe,EAGvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAIH,KAAK,kBAAkB,EACvB,KAAK,eAAe,EAGvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAI9E,MAAM,WAAW,yBAAyB;IACtC,EAAE,EAAE,QAAQ,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,eAAe,CAAC;IACtB,UAAU,EAAE,MAAM,eAAe,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC;IAC3D,WAAW,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kEAAkE;IAClE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,4FAA4F;IAC5F,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IAChD;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,MAAM,IAAI,CAAC;IAC7B,iEAAiE;IACjE,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,0FAA0F;AAC1F,MAAM,WAAW,0BAA2B,SAAQ,wBAAwB;IACxE;;;;;;OAMG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAoHD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC5B,OAAO,EAAE,kBAAkB,EAC3B,IAAI,CAAC,EAAE,SAAS,QAAQ,CAAC,WAAW,CAAC,EAAE,GACxC,OAAO,EAAE,CA+EX;AAoBD;;;;;GAKG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;gBAEd,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAO;CAKlE;AA+GD,uEAAuE;AACvE,eAAO,MAAM,+BAA+B,EAAE,wBAAwB,CAAC,cAAc,CAGpF,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACpC,OAAO,EAAE,MAAM,wBAAwB,GAAG,SAAS,GACpD,wBAAwB,CAiB1B;AAED,wBAAsB,gCAAgC,CAClD,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,yBAAyB,GACnC,OAAO,CAAC,0BAA0B,CAAC,CA6jBrC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/v2/hooks/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAmExD,OAAO,EACH,KAAK,qBAAqB,EAE7B,MAAM,mDAAmD,CAAC;AA6B3D,OAAO,EAAE,6BAA6B,EAAE,MAAM,8CAA8C,CAAC;AAC7F,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAuB1F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAGH,KAAK,oBAAoB,EAC5B,MAAM,qCAAqC,CAAC;AAG7C,OAAO,EACH,KAAK,QAAQ,EAKhB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/v2/hooks/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAmExD,OAAO,EACH,KAAK,qBAAqB,EAE7B,MAAM,mDAAmD,CAAC;AA6B3D,OAAO,EAAE,6BAA6B,EAAE,MAAM,8CAA8C,CAAC;AAC7F,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAuB1F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAGH,KAAK,oBAAoB,EAC5B,MAAM,qCAAqC,CAAC;AAG7C,OAAO,EACH,KAAK,QAAQ,EAKhB,MAAM,qBAAqB,CAAC;AA0B7B,OAAO,EAAkB,KAAK,aAAa,EAAqB,MAAM,iBAAiB,CAAC;AA8CxF,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAa,MAAM,SAAS,CAAC;AAepE,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAQlE;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAChC,EAAE,EAAE,QAAQ,EACZ,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,kBAAkB,GAAG,eAAe,CAAC,EACjE,SAAS,EAAE,MAAM,GAClB,qBAAqB,GAAG,SAAS,CAanC;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,uBAAuB,CACzC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,EAC1C,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC,OAAO,CAAC,IAAI,CAAC,CAcf;AA4BD,wBAAgB,eAAe,CAC3B,OAAO,EAAE,SAAS,EAClB,oBAAoB,EAAE,aAAa,CAAC,iBAAiB,CAAC,GAAG,EAAE,EAC3D,oBAAoB,EAAE,WAAW,CAAC,aAAa,CAAC,iCAAiC,CAAC,CAAC,EACnF,UAAU,EAAE,WAAW,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC,GAC7D,QAAQ,CACP,IAAI,CACA,aAAa,EACX,iBAAiB,GACjB,iCAAiC,GACjC,wBAAwB,GACxB,2BAA2B,GAC3B,mBAAmB,GACnB,aAAa,GACb,mBAAmB,GACnB,YAAY,CACjB,CACJ,CAiCA;AAED,KAAK,iBAAiB,GAAG,IAAI,CACzB,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,QAAQ,CAAC,EACrD,8BAA8B,GAAG,0BAA0B,CAC9D,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,qBAAqB,CACjC,MAAM,EAAE,iBAAiB,GAC1B,IAAI,CAAC,aAAa,EAAE,WAAW,GAAG,4BAA4B,GAAG,wBAAwB,CAAC,CAS5F;AAyBD;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAKhF;AAED,2EAA2E;AAC3E,wBAAgB,aAAa,CACzB,MAAM,EAAE,OAAO,EACf,UAAU,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,GACrC,KAAK,CAAC;IACL,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/D,CAAC,CAyCD;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAElE;AAED,4EAA4E;AAC5E,wBAAgB,yBAAyB,CACrC,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,mBAAmB,GAAG,SAAS,EACvC,iBAAiB,UAAO,GACzB,IAAI,CAsBN;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAgBnE;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,mBAAmB,CACrC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,6BAA6B,CAAC,EAAE,SAAS,CAAC,EAC/E,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC,GACrF,OAAO,CAAC,IAAI,CAAC,CAwCf;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,SAAS;;eAm3DvD"}
|