@retaw106/mmc-oc 2.6.0 → 2.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/{context-cfbjrr0n.js → context-9q17e52a.js} +140 -53
  2. package/dist/features/magic-context/auto-search-diagnostics.d.ts +27 -0
  3. package/dist/features/magic-context/auto-search-diagnostics.d.ts.map +1 -0
  4. package/dist/features/magic-context/search.d.ts +4 -0
  5. package/dist/features/magic-context/search.d.ts.map +1 -1
  6. package/dist/hooks/magic-context/auto-search-observation.d.ts +13 -0
  7. package/dist/hooks/magic-context/auto-search-observation.d.ts.map +1 -0
  8. package/dist/hooks/magic-context/auto-search-runner.d.ts.map +1 -1
  9. package/dist/hooks/magic-context/transform.d.ts.map +1 -1
  10. package/dist/{index-1np16gxq.js → index-cgjyhwdk.js} +1 -1
  11. package/dist/{index-xk1dz6q9.js → index-xrxpbe74.js} +34 -1
  12. package/dist/index.js +14 -4
  13. package/dist/{recomp-orchestrator-51xyaexp.js → recomp-orchestrator-gzd1at06.js} +2 -2
  14. package/dist/shared/search-text.d.ts +2 -0
  15. package/dist/shared/search-text.d.ts.map +1 -1
  16. package/dist/tools/ctx-expand/render.d.ts +5 -3
  17. package/dist/tools/ctx-expand/render.d.ts.map +1 -1
  18. package/dist/tools/ctx-expand/tools.d.ts +2 -0
  19. package/dist/tools/ctx-expand/tools.d.ts.map +1 -1
  20. package/dist/tools/parameter-descriptions.d.ts +6 -6
  21. package/dist/tools/parameter-descriptions.d.ts.map +1 -1
  22. package/dist/tui.js +2144 -0
  23. package/dist/v2/server.js +194 -54
  24. package/dist/v2/tui/client.d.ts +57 -0
  25. package/dist/v2/tui/client.d.ts.map +1 -0
  26. package/dist/v2/tui/context-rpc.d.ts +63 -0
  27. package/dist/v2/tui/context-rpc.d.ts.map +1 -0
  28. package/dist/v2/tui/entry.d.ts +8 -0
  29. package/dist/v2/tui/entry.d.ts.map +1 -0
  30. package/dist/v2/tui/notification-socket.d.ts +26 -0
  31. package/dist/v2/tui/notification-socket.d.ts.map +1 -0
  32. package/dist/v2/tui/session-directory.d.ts +22 -0
  33. package/dist/v2/tui/session-directory.d.ts.map +1 -0
  34. package/dist/v2/tui/types.d.ts +110 -0
  35. package/dist/v2/tui/types.d.ts.map +1 -0
  36. package/dist/{wrapup-orchestrator-g0mww1h4.js → wrapup-orchestrator-ghq4y406.js} +2 -2
  37. package/package.json +13 -3
  38. package/src/shared/prompt-surface-a1-golden.md +5 -5
  39. package/src/shared/search-text.test.ts +36 -1
  40. package/src/shared/search-text.ts +48 -0
  41. package/tui.js +4 -0
@@ -16633,6 +16633,39 @@ function keywordRelevance(query, content) {
16633
16633
  const words = new Set(terms(cleanSearchText(content)));
16634
16634
  return 0.8 * needles.filter((term) => words.has(term)).length / needles.length;
16635
16635
  }
16636
+ var CJK_RUN = /^[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}]+$/u;
16637
+ var CJK_RUN_SPLIT = /([\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}]+)/u;
16638
+ function hintTerms(text) {
16639
+ return [
16640
+ ...new Set(terms(text).flatMap((term) => term.split(CJK_RUN_SPLIT)).filter((term) => term.length > 0 && !QUERY_STOP_WORDS.has(term)))
16641
+ ];
16642
+ }
16643
+ function characterBigrams(run) {
16644
+ const characters = [...run];
16645
+ return characters.length === 1 ? characters : characters.slice(1).map((character, index) => characters[index] + character);
16646
+ }
16647
+ function hintKeywordRelevance(query, content) {
16648
+ const needles = hintTerms(query);
16649
+ if (needles.length === 0)
16650
+ return 0;
16651
+ const words = new Set(hintTerms(cleanSearchText(content)));
16652
+ const runs = [...words].filter((word) => CJK_RUN.test(word));
16653
+ const bigrams = new Set(runs.flatMap(characterBigrams));
16654
+ let matched = 0;
16655
+ for (const needle of needles) {
16656
+ if (!CJK_RUN.test(needle)) {
16657
+ matched += Number(words.has(needle));
16658
+ continue;
16659
+ }
16660
+ const grams = characterBigrams(needle);
16661
+ if ([...needle].length === 1) {
16662
+ matched += Number(runs.some((run) => run.includes(needle)));
16663
+ continue;
16664
+ }
16665
+ matched += Math.min(1, grams.filter((gram) => bigrams.has(gram)).length / Math.ceil(grams.length / 2));
16666
+ }
16667
+ return 0.8 * matched / needles.length;
16668
+ }
16636
16669
  function matchedSearchSnippet(content, query, cap = 220) {
16637
16670
  const text = cleanSearchText(content);
16638
16671
  const needles = new Set(terms(query));
@@ -30916,4 +30949,4 @@ async function executeContextRecomp(deps, options = {}) {
30916
30949
  return (await executeContextRecompWithResult(deps, options)).message;
30917
30950
  }
30918
30951
 
30919
- export { MEMORY_MAINTAINER_A_AGENT, MEMORY_MAINTAINER_B_AGENT, MEMORY_MAINTAINER_A_STEP_CAP, resolveMaintenanceStepCap, MEMORY_MAINTAINER_A_SYSTEM_PROMPT, MEMORY_MAINTAINER_B_SYSTEM_PROMPT, MEMORY_MAINTAINER_FINALIZE_INSTRUCTION, buildMemoryMaintainerStageAPrompt, buildMemoryMaintainerStageBPrompt, getOpenCodeGlobalConfigDir, getOpenCodeConfigDirs, opencodeUserConfigBasePath, mmcProjectConfigBasePath, buildPrimaryLanguageDirective, resolveModelConfigValue, DEFAULT_EXECUTE_THRESHOLD_PERCENTAGE, PROTECTED_TOKENS_MIN, HISTORIAN_MODEL_RESOLUTION_FIELDS, LEGACY_HARNESS_BLOCK_KEYS, ConfigProfilesSchema, MagicContextConfigSchema, LIVE_RELOAD_CONFIG_PATHS, formatFailClosedBlockingMessage, formatFailClosedBlockingSummary, createFailClosedBlockingError, isFailClosedBlockingError, setHomeProjectPermission, shouldSkipHomeProjectMemory, ProjectIdentityError, takeDubiousOwnershipProjectIdentityWarning, isUserHomeDirectory, describeUnresolvedProjectIdentity, resolveProjectIdentityForSession, normalizeStoredProjectPath, storedPathBelongsToIdentity, parseProviderModel, modelBodyField, toModelEntry, HiddenCompletionRefusal, HIDDEN_HISTORIAN_AGENT, resolveHistorianStepCap, HIDDEN_RUN_DISPOSED_REASON, noteChildOfDisposedInstance, hiddenChildPermissions, registerHiddenChildAgents, HiddenAgentStepLimit, HiddenChildHook, isNonRetryable, V2_MEMORY_CATEGORIES, CATEGORY_PRIORITY, computeNormalizedHash, hasMemoryShareableColumn, hasMemoryClassifiedAtColumn, ModuleMemoryAuthorityError, insertMemory, insertMemoryIdempotent, getMemoryByHash, getMemoriesByProject, getMemoriesByProjects, getMemoryById, getMemoriesByIds, updateMemorySeenCount, updateMemoryRetrievalCount, supersededMemory, mergeMemoryStats, archiveMemory, relaxedFtsQuery, sanitizeFtsQuery, searchMemoriesFTS, searchMemoriesFTSUnion, clearMemoryVerifications, queueMemoryMutation, scheduleAfterBootQuiet, cleanSearchText, keywordRelevance, matchedSearchSnippet, getLastIndexedOrdinal, getIndexedMessageIdAtOrdinal, getIndexedMessageCorpusSize, getMessageIndexReconciliationStartOrdinal, isMessageIndexReconciledThrough, clearIndexedMessages, indexMessagesAfterOrdinal, registerOwnRpcServerInstance, rpcPortDir, rpcPortFilePath, parseRpcPortFile, inspectProcessesAsync, COMPARTMENT_LEASE_RENEWAL_MS, acquireCompartmentLease, renewCompartmentLease, releaseCompartmentLeaseBestEffort, isCompartmentLeaseHeld, queueM0Mutation, getMaxM0MutationId, ensureSessionMetaRow, clearCachedM0M1, clearCachedM0, getTableColumnNames, getCompartments, getLastCompartmentEndMessage, getLastCompartmentEndMessageId, getAuthorityManagedMarker, getTemporalDecisions, observeTemporalDecisions, freezeTemporalDecisions, MAX_EXECUTE_THRESHOLD, escalationBands, MERGED_REASONING_PARTS_PREFIX, decodeMergedReasoningParts, readFrozenMergedReasoningParts, HYGIENE_PROVIDER_UNITS_VERSION, sessionDecisionCalibration, transitionSessionHygieneUnits, readEpochFloorSnapshot, getProtectionWindowForSession, ReplayDocumentError, readReplayEnvelope, updateReplayDocument, isEmergencyRecoveryArmed, loadPersistedUsage, loadProtectedTailMeta, resetProtectedTailNoEligibleHead, getWrapupInProgressState, acquireWrapupInProgress, updateWrapupInProgress, releaseWrapupInProgress, resolveCompactionModeRecord, getCompactionModeRecord, setCompactionModeRecord, getProtectedTailDrainBudgetSkip, clearPersistedReasoningWatermark, getEmergencyInputSample, setEmergencyDropSample, clearEmergencyDropSample, getLastNudgeUndropped, setLastNudgeUndropped, getChannel1NudgeState, setChannel1NudgeState, markChannel1PostReduceGracePending, captureChannel1PostReduceGraceBaseline, getChannel2NudgeState, setChannel2NudgeState, casChannel2NudgeState, claimChannel2NudgeState, casChannel2NudgeClaim, getAutoSearchHintDecisions, appendAutoSearchHintDecision, flushAutoSearchHintDecisionRetirement, getPersistedTodoPermissionDenied, setPersistedTodoPermissionDenied, getPersistedTodoSyntheticAnchor, setPersistedTodoSyntheticAnchor, clearPersistedTodoSyntheticAnchor, getHistorianFailureState, clearHistorianFailureState, getOverflowState, loadTransformPassStateSnapshot, recordOverflowDetected, recordDetectedContextLimit, clearEmergencyRecovery, clearDetectedContextLimit, getPersistedCompactionMarkerState, clearCompactionMarkerPublicationIntent, setPersistedCompactionMarkerState, getDeferredClearedCompactionMarkerState, retireDeferredClearedCompactionMarkerState, applyStrippedPlaceholderDelta, THINKING_BINDING_RECOVERY_FROZEN_PREFIX, thinkingBindingRecoveryFrozenId, getThinkingBindingRecoveryTarget, clearThinkingBindingRecoveryIf, getMergedReasoningStrippedIds, addMergedReasoningStrippedIds, getTrailingBlankDecisions, addTrailingBlankDecisions, demoteTrailingBlankKeepDecisions, addStaleReduceStrippedIds, getProcessedImageMarkers, addProcessedImageStrippedIds, getPendingCompactionMarkerState, getCompactionMarkerHealth, loadPostprocessReplaySnapshot, clearPendingCompactionMarkerStateIf, getPendingPiCompactionMarkerState, clearPendingPiCompactionMarkerStateIf, logPiCompactionMarkerClear, setSessionWorkMetrics, getObservedEpochFloor, resolveEpochFloorForPass, providerResponseFailed, isSuccessfulProviderCompletion, dirtyLkgRecoveryRevision, ownsLkgDirtyFence, invalidateCleanLkgRecoveryFence, rememberUnpublishedAutoSearchNoHint, getUnpublishedAutoSearchNoHint, forgetUnpublishedAutoSearchNoHint, registerAutoSearchWork, gaDatabasePath, RAW_MESSAGE_TYPES, V2StoreReaderPool, getOrCreateSessionMeta, updateSessionMeta, advanceToolReclaimWatermark, markSessionCleanupPending, clearSession, requestPendingMaterialization, pendingMaterializationOrigin, hasPendingMaterializationOrigin, clearPendingMaterialization, recordSystemPromptForRequest, recordHeldHeadForRequest, bindSystemPromptResponse, isHeldHeadForRequest, deferDeliveredSystemRefresh, retirePendingSystemPromptDelivery, lkgProviderInputTotal, beginV2LkgRequest, currentLkgRequestIdentity, noteLkgProviderResponse, clearLkgMeasuredRequest, saveLkgSlotToDb, loadPersistedLkgSlot, pruneStaleLkgSlots, resolveLkgModelKeys, createLkgEntryProjector, captureLkgSlot, replayLkg, noteUncertifiedNormalLkg, lkgDirtyRevision, readLkgRecoveryPrefix, noteLkgHealthyPrefix, lkgInputIdentity, beginLkgPass, getInMemorySlot, getSlot, dropSlot, getLkgSlotHeapStats, TOOL_SWEEP_SCOPED_MARKER, useScopedToolSweep, createPreAdoptionToolSweepResolver, copySessionStateForClone, getSchemaFenceRejection, getMigrationOnOpenRefusal, LATEST_SUPPORTED_VERSION, getPersistedSchemaVersion, openCurrentDatabase, openDatabaseAsync, isDatabasePersisted, getDatabasePersistenceError, getNoteByIdInScope, getNotes, addNote, getSessionNotes, updateNote, dismissNotes, dismissNote, getActivePrimers, saveSourceContent, replaceSourceContent, getSourceContents, resolveWorkspaceShareCategories, resolveWorkspaceIdentitySet, expandWorkspaceIdentitySetWithAliases, resolveStoredPathWorkspaceIdentity, storedPathBelongsToWorkspace, sourceNameForMemory, rebaseSessionCoordinatesAsync, renderUserFacingFailure, userFacingFailureCode, renderCapabilityRefusal, ACTIVE_TOOL_IDS, systemPromptFingerprint, createPromptSurfaceRuntime, createPromptSurfaceGuidanceEpochCache, getOpenCodeDbPath, compareOpenCodeMessagesByCanonicalOrder, removeMcOwnedCompactionMarkers, MARKER_SUMMARY_TEXT, applyDeferredCompactionMarker, HISTORIAN_AGENT, HISTORIAN_RECOMP_AGENT, HISTORIAN_EDITOR_AGENT, runTokenLog, shouldWaitForNewHistorianHistory, extractM0Block, TEMPORAL_MARKER_REPLAY_PATTERN, collectTemporalCandidates, injectTemporalMarkers, clearInjectionCache, getVisibleMemoryIds, selectHiddenMessagesAtCompactionSeam, prepareCompartmentInjection, renderCompartmentInjection, MaterializeContentionError, mustMaterialize, trimMemoriesToBudgetV2, renderMemoryBlockV2, materializeM0, resetPrefixTrimFallbackState, findHostCompactionWindow, capturePrefixTrimSourceOrder, prepareCachedM0M1Replay, hasCompleteCachedM0M1, injectM0M1, omitIncompleteFileTokenTotals, describeBoundaryDiagnostics, RECOVERY_NO_HEAD_LIMIT, deriveProtectedTailTokenTarget, selectPerRunCap, resolveOpenCodeProtectedTailBoundary, resolveWrapupProtectedTailBoundary, getRawHistoryEligibility, hasRunnableCompartmentWindow, recordHighPressureNoEligibleHead, runCompartmentAgent, getActiveCompartmentRun, markActiveCompartmentRunPublished, registerActiveCompartmentRun, startCompartmentAgent, executeContextRecomp };
30952
+ export { MEMORY_MAINTAINER_A_AGENT, MEMORY_MAINTAINER_B_AGENT, MEMORY_MAINTAINER_A_STEP_CAP, resolveMaintenanceStepCap, MEMORY_MAINTAINER_A_SYSTEM_PROMPT, MEMORY_MAINTAINER_B_SYSTEM_PROMPT, MEMORY_MAINTAINER_FINALIZE_INSTRUCTION, buildMemoryMaintainerStageAPrompt, buildMemoryMaintainerStageBPrompt, getOpenCodeGlobalConfigDir, getOpenCodeConfigDirs, opencodeUserConfigBasePath, mmcProjectConfigBasePath, buildPrimaryLanguageDirective, resolveModelConfigValue, DEFAULT_EXECUTE_THRESHOLD_PERCENTAGE, PROTECTED_TOKENS_MIN, HISTORIAN_MODEL_RESOLUTION_FIELDS, LEGACY_HARNESS_BLOCK_KEYS, ConfigProfilesSchema, MagicContextConfigSchema, LIVE_RELOAD_CONFIG_PATHS, formatFailClosedBlockingMessage, formatFailClosedBlockingSummary, createFailClosedBlockingError, isFailClosedBlockingError, setHomeProjectPermission, shouldSkipHomeProjectMemory, ProjectIdentityError, takeDubiousOwnershipProjectIdentityWarning, isUserHomeDirectory, describeUnresolvedProjectIdentity, resolveProjectIdentityForSession, normalizeStoredProjectPath, storedPathBelongsToIdentity, parseProviderModel, modelBodyField, toModelEntry, HiddenCompletionRefusal, HIDDEN_HISTORIAN_AGENT, resolveHistorianStepCap, HIDDEN_RUN_DISPOSED_REASON, noteChildOfDisposedInstance, hiddenChildPermissions, registerHiddenChildAgents, HiddenAgentStepLimit, HiddenChildHook, isNonRetryable, V2_MEMORY_CATEGORIES, CATEGORY_PRIORITY, computeNormalizedHash, hasMemoryShareableColumn, hasMemoryClassifiedAtColumn, ModuleMemoryAuthorityError, insertMemory, insertMemoryIdempotent, getMemoryByHash, getMemoriesByProject, getMemoriesByProjects, getMemoryById, getMemoriesByIds, updateMemorySeenCount, updateMemoryRetrievalCount, supersededMemory, mergeMemoryStats, archiveMemory, relaxedFtsQuery, sanitizeFtsQuery, searchMemoriesFTS, searchMemoriesFTSUnion, clearMemoryVerifications, queueMemoryMutation, scheduleAfterBootQuiet, cleanSearchText, hintKeywordRelevance, matchedSearchSnippet, getLastIndexedOrdinal, getIndexedMessageIdAtOrdinal, getIndexedMessageCorpusSize, getMessageIndexReconciliationStartOrdinal, isMessageIndexReconciledThrough, clearIndexedMessages, indexMessagesAfterOrdinal, registerOwnRpcServerInstance, rpcPortDir, rpcPortFilePath, parseRpcPortFile, inspectProcessesAsync, COMPARTMENT_LEASE_RENEWAL_MS, acquireCompartmentLease, renewCompartmentLease, releaseCompartmentLeaseBestEffort, isCompartmentLeaseHeld, queueM0Mutation, getMaxM0MutationId, ensureSessionMetaRow, clearCachedM0M1, clearCachedM0, getTableColumnNames, getCompartments, getLastCompartmentEndMessage, getLastCompartmentEndMessageId, getAuthorityManagedMarker, getTemporalDecisions, observeTemporalDecisions, freezeTemporalDecisions, MAX_EXECUTE_THRESHOLD, escalationBands, MERGED_REASONING_PARTS_PREFIX, decodeMergedReasoningParts, readFrozenMergedReasoningParts, HYGIENE_PROVIDER_UNITS_VERSION, sessionDecisionCalibration, transitionSessionHygieneUnits, readEpochFloorSnapshot, getProtectionWindowForSession, ReplayDocumentError, readReplayEnvelope, updateReplayDocument, isEmergencyRecoveryArmed, loadPersistedUsage, loadProtectedTailMeta, resetProtectedTailNoEligibleHead, getWrapupInProgressState, acquireWrapupInProgress, updateWrapupInProgress, releaseWrapupInProgress, resolveCompactionModeRecord, getCompactionModeRecord, setCompactionModeRecord, getProtectedTailDrainBudgetSkip, clearPersistedReasoningWatermark, getEmergencyInputSample, setEmergencyDropSample, clearEmergencyDropSample, getLastNudgeUndropped, setLastNudgeUndropped, getChannel1NudgeState, setChannel1NudgeState, markChannel1PostReduceGracePending, captureChannel1PostReduceGraceBaseline, getChannel2NudgeState, setChannel2NudgeState, casChannel2NudgeState, claimChannel2NudgeState, casChannel2NudgeClaim, getAutoSearchHintDecisions, appendAutoSearchHintDecision, flushAutoSearchHintDecisionRetirement, getPersistedTodoPermissionDenied, setPersistedTodoPermissionDenied, getPersistedTodoSyntheticAnchor, setPersistedTodoSyntheticAnchor, clearPersistedTodoSyntheticAnchor, getHistorianFailureState, clearHistorianFailureState, getOverflowState, loadTransformPassStateSnapshot, recordOverflowDetected, recordDetectedContextLimit, clearEmergencyRecovery, clearDetectedContextLimit, getPersistedCompactionMarkerState, clearCompactionMarkerPublicationIntent, setPersistedCompactionMarkerState, getDeferredClearedCompactionMarkerState, retireDeferredClearedCompactionMarkerState, applyStrippedPlaceholderDelta, THINKING_BINDING_RECOVERY_FROZEN_PREFIX, thinkingBindingRecoveryFrozenId, getThinkingBindingRecoveryTarget, clearThinkingBindingRecoveryIf, getMergedReasoningStrippedIds, addMergedReasoningStrippedIds, getTrailingBlankDecisions, addTrailingBlankDecisions, demoteTrailingBlankKeepDecisions, addStaleReduceStrippedIds, getProcessedImageMarkers, addProcessedImageStrippedIds, getPendingCompactionMarkerState, getCompactionMarkerHealth, loadPostprocessReplaySnapshot, clearPendingCompactionMarkerStateIf, getPendingPiCompactionMarkerState, clearPendingPiCompactionMarkerStateIf, logPiCompactionMarkerClear, setSessionWorkMetrics, getObservedEpochFloor, resolveEpochFloorForPass, providerResponseFailed, isSuccessfulProviderCompletion, dirtyLkgRecoveryRevision, ownsLkgDirtyFence, invalidateCleanLkgRecoveryFence, rememberUnpublishedAutoSearchNoHint, getUnpublishedAutoSearchNoHint, forgetUnpublishedAutoSearchNoHint, registerAutoSearchWork, gaDatabasePath, RAW_MESSAGE_TYPES, V2StoreReaderPool, getOrCreateSessionMeta, updateSessionMeta, advanceToolReclaimWatermark, markSessionCleanupPending, clearSession, requestPendingMaterialization, pendingMaterializationOrigin, hasPendingMaterializationOrigin, clearPendingMaterialization, recordSystemPromptForRequest, recordHeldHeadForRequest, bindSystemPromptResponse, isHeldHeadForRequest, deferDeliveredSystemRefresh, retirePendingSystemPromptDelivery, lkgProviderInputTotal, beginV2LkgRequest, currentLkgRequestIdentity, noteLkgProviderResponse, clearLkgMeasuredRequest, saveLkgSlotToDb, loadPersistedLkgSlot, pruneStaleLkgSlots, resolveLkgModelKeys, createLkgEntryProjector, captureLkgSlot, replayLkg, noteUncertifiedNormalLkg, lkgDirtyRevision, readLkgRecoveryPrefix, noteLkgHealthyPrefix, lkgInputIdentity, beginLkgPass, getInMemorySlot, getSlot, dropSlot, getLkgSlotHeapStats, TOOL_SWEEP_SCOPED_MARKER, useScopedToolSweep, createPreAdoptionToolSweepResolver, copySessionStateForClone, getSchemaFenceRejection, getMigrationOnOpenRefusal, LATEST_SUPPORTED_VERSION, getPersistedSchemaVersion, openCurrentDatabase, openDatabaseAsync, isDatabasePersisted, getDatabasePersistenceError, getNoteByIdInScope, getNotes, addNote, getSessionNotes, updateNote, dismissNotes, dismissNote, getActivePrimers, saveSourceContent, replaceSourceContent, getSourceContents, resolveWorkspaceShareCategories, resolveWorkspaceIdentitySet, expandWorkspaceIdentitySetWithAliases, resolveStoredPathWorkspaceIdentity, storedPathBelongsToWorkspace, sourceNameForMemory, rebaseSessionCoordinatesAsync, renderUserFacingFailure, userFacingFailureCode, renderCapabilityRefusal, ACTIVE_TOOL_IDS, systemPromptFingerprint, createPromptSurfaceRuntime, createPromptSurfaceGuidanceEpochCache, getOpenCodeDbPath, compareOpenCodeMessagesByCanonicalOrder, removeMcOwnedCompactionMarkers, MARKER_SUMMARY_TEXT, applyDeferredCompactionMarker, HISTORIAN_AGENT, HISTORIAN_RECOMP_AGENT, HISTORIAN_EDITOR_AGENT, runTokenLog, shouldWaitForNewHistorianHistory, extractM0Block, TEMPORAL_MARKER_REPLAY_PATTERN, collectTemporalCandidates, injectTemporalMarkers, clearInjectionCache, getVisibleMemoryIds, selectHiddenMessagesAtCompactionSeam, prepareCompartmentInjection, renderCompartmentInjection, MaterializeContentionError, mustMaterialize, trimMemoriesToBudgetV2, renderMemoryBlockV2, materializeM0, resetPrefixTrimFallbackState, findHostCompactionWindow, capturePrefixTrimSourceOrder, prepareCachedM0M1Replay, hasCompleteCachedM0M1, injectM0M1, omitIncompleteFileTokenTotals, describeBoundaryDiagnostics, RECOVERY_NO_HEAD_LIMIT, deriveProtectedTailTokenTarget, selectPerRunCap, resolveOpenCodeProtectedTailBoundary, resolveWrapupProtectedTailBoundary, getRawHistoryEligibility, hasRunnableCompartmentWindow, recordHighPressureNoEligibleHead, runCompartmentAgent, getActiveCompartmentRun, markActiveCompartmentRunPublished, registerActiveCompartmentRun, startCompartmentAgent, executeContextRecomp };
package/dist/index.js CHANGED
@@ -6,7 +6,7 @@ import {
6
6
  // package.json
7
7
  var package_default = {
8
8
  name: "@retaw106/mmc-oc",
9
- version: "2.6.0",
9
+ version: "2.7.1",
10
10
  type: "module",
11
11
  description: "OpenCode plugin for Magic Context — cross-session memory and context management",
12
12
  main: "dist/index.js",
@@ -37,14 +37,16 @@ var package_default = {
37
37
  files: [
38
38
  "dist",
39
39
  "index.js",
40
+ "tui.js",
40
41
  "src/shared",
41
42
  "src/config",
42
43
  "src/agents",
43
44
  "README.md"
44
45
  ],
45
46
  scripts: {
46
- build: "bun ../../scripts/check-bun.mjs && bun ../../scripts/clean-dist-chunks.mjs dist index.js config-init.js cli.js && rm -rf dist/web && bun build src/index.ts --outdir dist --target node --format esm --splitting --external @opencode-ai/plugin --external bun:sqlite --external node:sqlite && bun run build:v2 && bun run build:web && bun run build:config-init && bun run build:cli && tsc --emitDeclarationOnly",
47
+ build: "bun ../../scripts/check-bun.mjs && bun ../../scripts/clean-dist-chunks.mjs dist index.js config-init.js cli.js && rm -rf dist/web && bun build src/index.ts --outdir dist --target node --format esm --splitting --external @opencode-ai/plugin --external bun:sqlite --external node:sqlite && bun run build:v2 && bun run build:tui && bun run build:web && bun run build:config-init && bun run build:cli && tsc --emitDeclarationOnly",
47
48
  "build:v2": "bun build src/v2/server.ts --outfile dist/v2/server.js --target node --format esm --external @opencode/plugin && bun test src/v2/server.test.ts",
49
+ "build:tui": "bun build src/v2/tui/entry.ts --outfile dist/tui.js --target node --format esm",
48
50
  "build:web": "bun build src/web/main.ts --outfile dist/web/main.js --target node --format esm --external bun:sqlite --external node:sqlite && mkdir -p dist/web/ui && cp src/web/ui/* dist/web/ui/",
49
51
  "build:config-init": "bun build scripts/config-init-entry.ts --outfile dist/config-init.js --target node --format esm",
50
52
  "build:cli": "bun build scripts/cli.ts --outfile dist/cli.js --target node --format esm",
@@ -86,10 +88,18 @@ var package_default = {
86
88
  ".": {
87
89
  types: "./dist/index.d.ts",
88
90
  import: "./dist/index.js"
91
+ },
92
+ "./tui": {
93
+ import: "./tui.js"
89
94
  }
90
95
  },
91
96
  "oc-plugin": [
92
- "server"
97
+ "server",
98
+ "tui"
99
+ ],
100
+ opencode: [
101
+ "server",
102
+ "tui"
93
103
  ],
94
104
  peerDependencies: {
95
105
  "@opencode-ai/plugin": ">=1.15.0"
@@ -127,7 +137,7 @@ async function setup(context) {
127
137
  log("v2 setup() called on a host without session.hook; v1 server lane owns this host, v2 lane inert");
128
138
  return async () => {};
129
139
  }
130
- const { registerContext } = await import("./context-cfbjrr0n.js");
140
+ const { registerContext } = await import("./context-9q17e52a.js");
131
141
  setHarness("opencode2");
132
142
  const duties = await registerContext(context);
133
143
  log("[magic-context] @retaw106/mmc-oc v2 setup");
@@ -2,8 +2,8 @@ import {
2
2
  setRecompStarting2,
3
3
  setRecompTerminal2,
4
4
  runManagedRecomp2
5
- } from "./index-1np16gxq.js";
6
- import"./index-xk1dz6q9.js";
5
+ } from "./index-cgjyhwdk.js";
6
+ import"./index-xrxpbe74.js";
7
7
  import"./index-s3ebcy63.js";
8
8
  import"./index-t0zx3tgz.js";
9
9
  import"./index-8rmt6s4f.js";
@@ -3,6 +3,8 @@ export declare function removeTaskNotifications(text: string): string;
3
3
  export declare function cleanSearchText(text: string): string;
4
4
  /** Score distinct query coverage independently of other results. */
5
5
  export declare function keywordRelevance(query: string, content: string): number;
6
+ /** Match unspaced clauses for hints without changing retrieval or snippet scoring. */
7
+ export declare function hintKeywordRelevance(query: string, content: string): number;
6
8
  /** Pick the densest matching passage before compression discards matched words. */
7
9
  export declare function matchedSearchSnippet(content: string, query: string, cap?: number): string;
8
10
  //# sourceMappingURL=search-text.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"search-text.d.ts","sourceRoot":"","sources":["../../src/shared/search-text.ts"],"names":[],"mappings":"AAEA,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,+FAA+F;AAC/F,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIpD;AAkBD,oEAAoE;AACpE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAKvE;AAED,mFAAmF;AACnF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,SAAM,GAAG,MAAM,CAuBtF"}
1
+ {"version":3,"file":"search-text.d.ts","sourceRoot":"","sources":["../../src/shared/search-text.ts"],"names":[],"mappings":"AAEA,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,+FAA+F;AAC/F,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIpD;AAkBD,oEAAoE;AACpE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAKvE;AAsBD,sFAAsF;AACtF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAyB3E;AAED,mFAAmF;AACnF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,SAAM,GAAG,MAAM,CAuBtF"}
@@ -22,6 +22,7 @@
22
22
  */
23
23
  import { type ContextDatabase } from "../../features/magic-context/storage";
24
24
  import type { ToolExpansionMap } from "../../shared/historian-tool-template";
25
+ export type RecoveryAttachments = (sessionId: string, messageId: string) => readonly unknown[];
25
26
  /**
26
27
  * Full untruncated recovery of one message by its ORDINAL — the same `[N]`
27
28
  * identifier the agent already uses everywhere (compartment start/end, mmc_search
@@ -29,7 +30,7 @@ import type { ToolExpansionMap } from "../../shared/historian-tool-template";
29
30
  * sits at that ordinal (pruned/reverted or wrong ordinal) — stated as absence
30
31
  * from stored history, never as permanent deletion.
31
32
  */
32
- export declare function renderMessageByOrdinal(sessionId: string, ordinal: number): string;
33
+ export declare function renderMessageByOrdinal(sessionId: string, ordinal: number, attachments?: RecoveryAttachments): string;
33
34
  export interface VerboseRangeResult {
34
35
  text: string;
35
36
  /** Last ordinal actually rendered (for the continuation hint). */
@@ -42,7 +43,8 @@ export interface VerboseRangeResult {
42
43
  * id and a per-part preview, bounded by `tokenBudget`. The agent reads the ids
43
44
  * here and recovers any one message in full with mmc_expand(id=...).
44
45
  */
45
- export declare function renderVerboseRange(sessionId: string, start: number, end: number, tokenBudget: number, expandTools?: ToolExpansionMap): VerboseRangeResult;
46
+ export declare function renderVerboseRange(sessionId: string, start: number, end: number, tokenBudget: number, expandTools?: ToolExpansionMap, attachments?: RecoveryAttachments): VerboseRangeResult;
47
+ export declare function renderVerboseRangeForTool(sessionId: string, start: number, end: number, tokenBudget: number, expandTools?: ToolExpansionMap, attachments?: RecoveryAttachments): string;
46
48
  /** Resolve a transcript handle by persisted ownership, never by message ordinal. */
47
- export declare function renderItemByTag(db: ContextDatabase, sessionId: string, number: number, textIndexDomain?: "part" | "text"): string;
49
+ export declare function renderItemByTag(db: ContextDatabase, sessionId: string, number: number, textIndexDomain?: "part" | "text", attachments?: RecoveryAttachments): string;
48
50
  //# sourceMappingURL=render.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../src/tools/ctx-expand/render.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,EAAE,KAAK,eAAe,EAAc,MAAM,sCAAsC,CAAC;AAQxF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAkM7E;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAwBjF;AAED,MAAM,WAAW,kBAAkB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,WAAW,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,SAAS,EAAE,OAAO,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAC9B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,gBAAgB,GAC/B,kBAAkB,CA2BpB;AAED,oFAAoF;AACpF,wBAAgB,eAAe,CAC3B,EAAE,EAAE,eAAe,EACnB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,eAAe,GAAE,MAAM,GAAG,MAAe,GAC1C,MAAM,CA+DR"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../src/tools/ctx-expand/render.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,EAAE,KAAK,eAAe,EAAc,MAAM,sCAAsC,CAAC;AAQxF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAE7E,MAAM,MAAM,mBAAmB,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,SAAS,OAAO,EAAE,CAAC;AAiN/F;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAClC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,mBAAmB,GAClC,MAAM,CA0BR;AAED,MAAM,WAAW,kBAAkB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,WAAW,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,SAAS,EAAE,OAAO,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAC9B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,gBAAgB,EAC9B,WAAW,CAAC,EAAE,mBAAmB,GAClC,kBAAkB,CA2BpB;AAED,wBAAgB,yBAAyB,CACrC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,gBAAgB,EAC9B,WAAW,CAAC,EAAE,mBAAmB,GAClC,MAAM,CAiBR;AAED,oFAAoF;AACpF,wBAAgB,eAAe,CAC3B,EAAE,EAAE,eAAe,EACnB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,eAAe,GAAE,MAAM,GAAG,MAAe,EACzC,WAAW,CAAC,EAAE,mBAAmB,GAClC,MAAM,CAqER"}
@@ -1,10 +1,12 @@
1
1
  import { type ToolDefinition } from "@opencode-ai/plugin";
2
2
  import type { ContextDatabase } from "../../features/magic-context/storage";
3
3
  import type { ToolExpansionMap } from "../../shared/historian-tool-template";
4
+ import { type RecoveryAttachments } from "./render";
4
5
  export { CTX_EXPAND_LIGHT_DESCRIPTION } from "../light-descriptions";
5
6
  export interface CtxExpandToolDeps {
6
7
  db: ContextDatabase;
7
8
  expandTools?: ToolExpansionMap;
9
+ recoveryAttachments?: RecoveryAttachments;
8
10
  }
9
11
  export declare function createCtxExpandTools(deps: CtxExpandToolDeps): Record<string, ToolDefinition>;
10
12
  //# sourceMappingURL=tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/tools/ctx-expand/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAQ,MAAM,qBAAqB,CAAC;AAEhE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAK5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAQ7E,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AAErE,MAAM,WAAW,iBAAiB;IAC9B,EAAE,EAAE,eAAe,CAAC;IACpB,WAAW,CAAC,EAAE,gBAAgB,CAAC;CAClC;AA6JD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAI5F"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/tools/ctx-expand/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAQ,MAAM,qBAAqB,CAAC;AAEhE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAK5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAI7E,OAAO,EACH,KAAK,mBAAmB,EAI3B,MAAM,UAAU,CAAC;AAIlB,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AAErE,MAAM,WAAW,iBAAiB;IAC9B,EAAE,EAAE,eAAe,CAAC;IACpB,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;CAC7C;AAsJD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAI5F"}
@@ -20,9 +20,9 @@ export declare const FULL_PARAMETER_DESCRIPTIONS: {
20
20
  };
21
21
  readonly mmc_memory: {
22
22
  readonly action: "write | update | archive | merge | get";
23
- readonly content: "The memory text — one standalone fact (write, update, merge).";
24
- readonly category: "Kind of fact (required for write; on update/merge, pass the memory's current category to keep it).";
25
- readonly ids: "Memory ids from <project-memory>: one for update, one or more for archive, two or more for merge, 1–20 for get.";
23
+ readonly content: "The memory text — one standalone fact (write, update, merge). Archive and get take an empty string.";
24
+ readonly category: "Kind of fact: the new fact's kind for write; on update/merge, the memory's current category to keep it. Archive and get ignore it.";
25
+ readonly ids: "Memory ids from <project-memory>: one for update, one or more for archive, two or more for merge, 1–20 for get. Write takes an empty list.";
26
26
  readonly reason: "Why it is being archived (optional).";
27
27
  };
28
28
  readonly mmc_search: {
@@ -54,9 +54,9 @@ export declare const LIGHT_PARAMETER_DESCRIPTIONS: {
54
54
  };
55
55
  readonly mmc_memory: {
56
56
  readonly action: "write | update | archive | merge | get";
57
- readonly content: "One standalone fact (write, update, merge).";
58
- readonly category: "Kind of fact (required for write; on update/merge pass the current category to keep it).";
59
- readonly ids: "Ids from <project-memory>: one for update, 1+ for archive, 2+ for merge, 1–20 for get.";
57
+ readonly content: "One standalone fact (write, update, merge). Archive and get: empty string.";
58
+ readonly category: "Kind of fact (write; on update/merge pass the current category to keep it). Archive and get ignore it.";
59
+ readonly ids: "Ids from <project-memory>: one for update, 1+ for archive, 2+ for merge, 1–20 for get. Write: empty list.";
60
60
  readonly reason: "Why it is archived (optional).";
61
61
  };
62
62
  readonly mmc_search: {
@@ -1 +1 @@
1
- {"version":3,"file":"parameter-descriptions.d.ts","sourceRoot":"","sources":["../../src/tools/parameter-descriptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsC9B,CAAC;AAEX,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoC/B,CAAC;AAEX,MAAM,MAAM,4BAA4B,GAAG,MAAM,OAAO,2BAA2B,CAAC;AAEpF,wBAAgB,wBAAwB,CACpC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,mBAAmB,GAC5B,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAI9C;AAED,wBAAgB,oCAAoC,CAChD,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,mBAAmB,GAC5B,IAAI,CAWN"}
1
+ {"version":3,"file":"parameter-descriptions.d.ts","sourceRoot":"","sources":["../../src/tools/parameter-descriptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuC9B,CAAC;AAEX,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoC/B,CAAC;AAEX,MAAM,MAAM,4BAA4B,GAAG,MAAM,OAAO,2BAA2B,CAAC;AAEpF,wBAAgB,wBAAwB,CACpC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,mBAAmB,GAC5B,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAI9C;AAED,wBAAgB,oCAAoC,CAChD,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,mBAAmB,GAC5B,IAAI,CAWN"}