refactor(context): rename VisibleDomain into FocusedDomain, and optimize related context usage

This commit is contained in:
2026-04-15 22:16:33 +08:00
parent 999a6a8d7e
commit 347560d979
20 changed files with 73 additions and 75 deletions

View File

@@ -108,7 +108,7 @@ public class CognitionCore implements StateSerializable {
appendRepeatedElements(document, root, "chat_message", resolveRecentChatMessages()); appendRepeatedElements(document, root, "chat_message", resolveRecentChatMessages());
} }
}, },
Set.of(ContextBlock.VisibleDomain.COGNITION), Set.of(ContextBlock.FocusedDomain.COMMUNICATION),
100, 100,
10, 10,
4 4

View File

@@ -27,10 +27,10 @@ class ContextWorkspace {
private val lock = ReentrantReadWriteLock() private val lock = ReentrantReadWriteLock()
/** /**
* 根据传入的 [ContextBlock.VisibleDomain] 列表,获取上下文块 * 根据传入的 [ContextBlock.FocusedDomain] 列表,获取上下文块
* @param domains 需要获取上下文的域列表,顺序将决定权重优先级,按照列表排序将具备线性权重分层,最终反映到 blockContent 列表的排序上 * @param domains 需要获取上下文的域列表,顺序将决定权重优先级,按照列表排序将具备线性权重分层,最终反映到 blockContent 列表的排序上
*/ */
fun resolve(domains: List<ContextBlock.VisibleDomain>): ResolvedContext = lock.write { fun resolve(domains: List<ContextBlock.FocusedDomain>): ResolvedContext = lock.write {
if (domains.isEmpty()) { if (domains.isEmpty()) {
return@write ResolvedContext(emptyList()) return@write ResolvedContext(emptyList())
} }
@@ -51,7 +51,7 @@ class ContextWorkspace {
continue continue
} }
val matchedDomains = block.visibleTo.intersect(domainWeights.keys) val matchedDomains = block.focusedOn.intersect(domainWeights.keys)
if (matchedDomains.isEmpty()) { if (matchedDomains.isEmpty()) {
continue continue
} }
@@ -158,7 +158,7 @@ class ContextWorkspace {
val payload = JSONObject() val payload = JSONObject()
payload["blockName"] = block.sourceKey.blockName payload["blockName"] = block.sourceKey.blockName
payload["source"] = block.sourceKey.source payload["source"] = block.sourceKey.source
payload["visibleTo"] = block.visibleTo.map { it.name } payload["focusedOn"] = block.focusedOn.map { it.name }
payload["fullRendered"] = block.blockContent.encodeToXmlString() payload["fullRendered"] = block.blockContent.encodeToXmlString()
payload["compactRendered"] = block.compactBlock.encodeToXmlString() payload["compactRendered"] = block.compactBlock.encodeToXmlString()
payload["abstractRendered"] = block.abstractBlock.encodeToXmlString() payload["abstractRendered"] = block.abstractBlock.encodeToXmlString()
@@ -179,9 +179,9 @@ data class ContextBlock @JvmOverloads constructor(
val compactBlock: BlockContent = blockContent, val compactBlock: BlockContent = blockContent,
val abstractBlock: BlockContent = blockContent, val abstractBlock: BlockContent = blockContent,
/** /**
* 哪些域可见 * 该 block 集中在哪些域
*/ */
val visibleTo: Set<VisibleDomain>, val focusedOn: Set<FocusedDomain>,
/** /**
* 新的 [blockContent] 属性与其相同时,发生的衰退步长 * 新的 [blockContent] 属性与其相同时,发生的衰退步长
@@ -216,7 +216,7 @@ data class ContextBlock @JvmOverloads constructor(
private var activationScore = 100.0 private var activationScore = 100.0
private var lastTouchedAt = Instant.now() private var lastTouchedAt = Instant.now()
enum class VisibleDomain { enum class FocusedDomain {
ACTION, ACTION,
MEMORY, MEMORY,
PERCEIVE, PERCEIVE,

View File

@@ -79,7 +79,7 @@ class BuiltinCapabilityActionProvider implements BuiltinActionProvider {
MemoryUnit unit = memoryCapability.getMemoryUnit(unitId); MemoryUnit unit = memoryCapability.getMemoryUnit(unitId);
cognitionCapability.contextWorkspace().register(new ContextBlock( cognitionCapability.contextWorkspace().register(new ContextBlock(
buildMemoryRecallFullBlock(unit, slice), buildMemoryRecallFullBlock(unit, slice),
Set.of(ContextBlock.VisibleDomain.MEMORY), Set.of(ContextBlock.FocusedDomain.MEMORY),
60, 60,
16, 16,
28 28

View File

@@ -12,10 +12,7 @@ import work.slhaf.partner.core.action.entity.MetaAction;
import work.slhaf.partner.core.action.entity.MetaActionInfo; import work.slhaf.partner.core.action.entity.MetaActionInfo;
import work.slhaf.partner.core.action.entity.intervention.InterventionType; import work.slhaf.partner.core.action.entity.intervention.InterventionType;
import work.slhaf.partner.core.action.entity.intervention.MetaIntervention; import work.slhaf.partner.core.action.entity.intervention.MetaIntervention;
import work.slhaf.partner.core.cognition.BlockContent; import work.slhaf.partner.core.cognition.*;
import work.slhaf.partner.core.cognition.CognitionCapability;
import work.slhaf.partner.core.cognition.ContextBlock;
import work.slhaf.partner.core.cognition.ContextWorkspace;
import work.slhaf.partner.framework.agent.exception.AgentRuntimeException; import work.slhaf.partner.framework.agent.exception.AgentRuntimeException;
import work.slhaf.partner.framework.agent.exception.ExceptionReporterHandler; import work.slhaf.partner.framework.agent.exception.ExceptionReporterHandler;
import work.slhaf.partner.framework.agent.factory.capability.annotation.InjectCapability; import work.slhaf.partner.framework.agent.factory.capability.annotation.InjectCapability;
@@ -133,7 +130,7 @@ class BuiltinInterventionActionProvider implements BuiltinActionProvider {
String blockName = "acquire_intervention-" + actionId; String blockName = "acquire_intervention-" + actionId;
String source = "action_executor"; String source = "action_executor";
contextWorkspace.register(new ContextBlock( contextWorkspace.register(new ContextBlock(
new BlockContent(blockName, source) { new CommunicationBlockContent(blockName, source, BlockContent.Urgency.HIGH, CommunicationBlockContent.Projection.SUPPLY) {
@Override @Override
protected void fillXml(@NotNull Document document, @NotNull Element root) { protected void fillXml(@NotNull Document document, @NotNull Element root) {
appendTextElement(document, root, "action_id", actionId); appendTextElement(document, root, "action_id", actionId);
@@ -141,7 +138,7 @@ class BuiltinInterventionActionProvider implements BuiltinActionProvider {
appendTextElement(document, root, "demand", demand); appendTextElement(document, root, "demand", demand);
} }
}, },
Set.of(ContextBlock.VisibleDomain.ACTION, ContextBlock.VisibleDomain.COMMUNICATION), Set.of(ContextBlock.FocusedDomain.ACTION),
10, 10,
10, 10,
20 20

View File

@@ -53,9 +53,9 @@ public class ActionCorrectionRecognizer extends AbstractAgentModule.Sub<Correcti
private Message resolveContextMessage() { private Message resolveContextMessage() {
return cognitionCapability.contextWorkspace().resolve(List.of( return cognitionCapability.contextWorkspace().resolve(List.of(
ContextBlock.VisibleDomain.ACTION, ContextBlock.FocusedDomain.ACTION,
ContextBlock.VisibleDomain.COGNITION, ContextBlock.FocusedDomain.COGNITION,
ContextBlock.VisibleDomain.MEMORY ContextBlock.FocusedDomain.MEMORY
)).encodeToMessage(); )).encodeToMessage();
} }

View File

@@ -63,9 +63,10 @@ public class ActionCorrector extends AbstractAgentModule.Sub<CorrectorInput, Res
private Message resolveContextMessage() { private Message resolveContextMessage() {
return cognitionCapability.contextWorkspace().resolve(List.of( return cognitionCapability.contextWorkspace().resolve(List.of(
ContextBlock.VisibleDomain.ACTION, ContextBlock.FocusedDomain.ACTION,
ContextBlock.VisibleDomain.COGNITION, ContextBlock.FocusedDomain.COMMUNICATION,
ContextBlock.VisibleDomain.MEMORY ContextBlock.FocusedDomain.COGNITION,
ContextBlock.FocusedDomain.MEMORY
)).encodeToMessage(); )).encodeToMessage();
} }

View File

@@ -39,7 +39,7 @@ class ExecutingActionBlockManager {
buildExecutingActionRecoveredFullBlock(snapshots, blockName, emittedAt, event), buildExecutingActionRecoveredFullBlock(snapshots, blockName, emittedAt, event),
buildExecutingActionRecoveredCompactBlock(snapshots, blockName, emittedAt, event), buildExecutingActionRecoveredCompactBlock(snapshots, blockName, emittedAt, event),
buildExecutingActionRecoveredAbstractBlock(snapshots, blockName, event), buildExecutingActionRecoveredAbstractBlock(snapshots, blockName, event),
Set.of(ContextBlock.VisibleDomain.ACTION), Set.of(ContextBlock.FocusedDomain.ACTION),
100, 100,
12, 12,
1 1
@@ -97,7 +97,7 @@ class ExecutingActionBlockManager {
buildStateActionFullBlock(snapshot, blockName, emittedAt, event), buildStateActionFullBlock(snapshot, blockName, emittedAt, event),
buildStateActionCompactBlock(snapshot, blockName, emittedAt, event), buildStateActionCompactBlock(snapshot, blockName, emittedAt, event),
buildStateActionAbstractBlock(snapshot, blockName, event), buildStateActionAbstractBlock(snapshot, blockName, event),
Set.of(ContextBlock.VisibleDomain.ACTION), Set.of(ContextBlock.FocusedDomain.ACTION),
70, 70,
18, 18,
10 10
@@ -151,7 +151,7 @@ class ExecutingActionBlockManager {
buildActionLaunchedFullBlock(snapshot, blockName, event, emittedAt), buildActionLaunchedFullBlock(snapshot, blockName, event, emittedAt),
buildActionCompactBlock(snapshot, blockName, event, emittedAt), buildActionCompactBlock(snapshot, blockName, event, emittedAt),
buildActionAbstractBlock(snapshot, blockName, event), buildActionAbstractBlock(snapshot, blockName, event),
Set.of(ContextBlock.VisibleDomain.ACTION), Set.of(ContextBlock.FocusedDomain.ACTION),
28, 28,
6, 6,
18 18
@@ -230,7 +230,7 @@ class ExecutingActionBlockManager {
buildActionStageFullBlock(snapshot, blockName, emittedAt, event), buildActionStageFullBlock(snapshot, blockName, emittedAt, event),
buildActionStageCompactBlock(snapshot, blockName, emittedAt, event), buildActionStageCompactBlock(snapshot, blockName, emittedAt, event),
buildActionStageAbstractBlock(snapshot, blockName, event), buildActionStageAbstractBlock(snapshot, blockName, event),
Set.of(ContextBlock.VisibleDomain.ACTION), Set.of(ContextBlock.FocusedDomain.ACTION),
55, 55,
10, 10,
12 12
@@ -305,7 +305,7 @@ class ExecutingActionBlockManager {
buildActionCorrectionFullBlock(snapshot, reason, interventions, blockName, emittedAt, event), buildActionCorrectionFullBlock(snapshot, reason, interventions, blockName, emittedAt, event),
buildActionCorrectionCompactBlock(snapshot, reason, interventions, blockName, emittedAt, event), buildActionCorrectionCompactBlock(snapshot, reason, interventions, blockName, emittedAt, event),
buildActionCorrectionAbstractBlock(snapshot, interventions, blockName, event), buildActionCorrectionAbstractBlock(snapshot, interventions, blockName, event),
Set.of(ContextBlock.VisibleDomain.ACTION), Set.of(ContextBlock.FocusedDomain.ACTION),
22, 22,
5, 5,
22 22
@@ -372,7 +372,7 @@ class ExecutingActionBlockManager {
buildActionFinishedFullBlock(snapshot, blockName, emittedAt, event), buildActionFinishedFullBlock(snapshot, blockName, emittedAt, event),
buildActionFinishedFullBlock(snapshot, blockName, emittedAt, event), buildActionFinishedFullBlock(snapshot, blockName, emittedAt, event),
buildActionFinishedAbstractBlock(snapshot, blockName, event), buildActionFinishedAbstractBlock(snapshot, blockName, event),
Set.of(ContextBlock.VisibleDomain.ACTION), Set.of(ContextBlock.FocusedDomain.ACTION),
35, 35,
14, 14,
24 24

View File

@@ -62,9 +62,9 @@ public class ParamsExtractor extends AbstractAgentModule.Sub<ExtractorInput, Res
private Message resolveContextMessage() { private Message resolveContextMessage() {
return cognitionCapability.contextWorkspace() return cognitionCapability.contextWorkspace()
.resolve(List.of( .resolve(List.of(
ContextBlock.VisibleDomain.ACTION, ContextBlock.FocusedDomain.ACTION,
ContextBlock.VisibleDomain.COGNITION, ContextBlock.FocusedDomain.COMMUNICATION,
ContextBlock.VisibleDomain.MEMORY ContextBlock.FocusedDomain.MEMORY
)) ))
.encodeToMessage(); .encodeToMessage();
} }

View File

@@ -93,7 +93,7 @@ public class ActionPlanner extends AbstractAgentModule.Running<PartnerRunningFlo
buildTendenciesEvaluatingFullBlock(tendencies), buildTendenciesEvaluatingFullBlock(tendencies),
buildTendenciesEvaluatingCompactBlock(tendencies, datetime, input), buildTendenciesEvaluatingCompactBlock(tendencies, datetime, input),
buildTendenciesEvaluatingAbstractBlock(tendencies, datetime, input), buildTendenciesEvaluatingAbstractBlock(tendencies, datetime, input),
Set.of(ContextBlock.VisibleDomain.ACTION, ContextBlock.VisibleDomain.COMMUNICATION), Set.of(ContextBlock.FocusedDomain.ACTION),
60, 60,
18, 18,
4 4
@@ -200,7 +200,7 @@ public class ActionPlanner extends AbstractAgentModule.Running<PartnerRunningFlo
buildPendingBlock(blockName, executableAction, evaluatorResult), buildPendingBlock(blockName, executableAction, evaluatorResult),
buildPendingCompactBlock(blockName, executableAction, evaluatorResult, input), buildPendingCompactBlock(blockName, executableAction, evaluatorResult, input),
buildPendingAbstractBlock(blockName, executableAction, evaluatorResult, input), buildPendingAbstractBlock(blockName, executableAction, evaluatorResult, input),
Set.of(ContextBlock.VisibleDomain.ACTION), Set.of(ContextBlock.FocusedDomain.ACTION),
30, 30,
10, 10,
5 5

View File

@@ -55,9 +55,10 @@ public class ActionEvaluator extends AbstractAgentModule.Sub<EvaluatorInput, Lis
try { try {
List<Message> messages = List.of( List<Message> messages = List.of(
cognitionCapability.contextWorkspace().resolve(List.of( cognitionCapability.contextWorkspace().resolve(List.of(
ContextBlock.VisibleDomain.ACTION, ContextBlock.FocusedDomain.ACTION,
ContextBlock.VisibleDomain.COGNITION, ContextBlock.FocusedDomain.COMMUNICATION,
ContextBlock.VisibleDomain.MEMORY ContextBlock.FocusedDomain.COGNITION,
ContextBlock.FocusedDomain.MEMORY
)).encodeToMessage(), )).encodeToMessage(),
availableMetaActionContext(), availableMetaActionContext(),
new Message(Message.Character.USER, tendency) new Message(Message.Character.USER, tendency)

View File

@@ -23,8 +23,8 @@ public class ActionExtractor extends AbstractAgentModule.Sub<String, Result<Extr
protected @NotNull Result<ExtractorResult> doExecute(String input) { protected @NotNull Result<ExtractorResult> doExecute(String input) {
List<Message> messages = List.of( List<Message> messages = List.of(
cognitionCapability.contextWorkspace().resolve(List.of( cognitionCapability.contextWorkspace().resolve(List.of(
ContextBlock.VisibleDomain.COGNITION, ContextBlock.FocusedDomain.COMMUNICATION,
ContextBlock.VisibleDomain.ACTION ContextBlock.FocusedDomain.ACTION
)).encodeToMessage(), )).encodeToMessage(),
new Message(Message.Character.USER, input) new Message(Message.Character.USER, input)
); );

View File

@@ -79,7 +79,7 @@ public class CommunicationProducer extends AbstractAgentModule.Running<PartnerRu
private List<Message> buildChatMessages(PartnerRunningFlowContext runningFlowContext) { private List<Message> buildChatMessages(PartnerRunningFlowContext runningFlowContext) {
ResolvedContext resolvedContext = cognitionCapability.contextWorkspace() ResolvedContext resolvedContext = cognitionCapability.contextWorkspace()
.resolve(List.of(ContextBlock.VisibleDomain.COMMUNICATION, ContextBlock.VisibleDomain.MEMORY, ContextBlock.VisibleDomain.PERCEIVE, ContextBlock.VisibleDomain.ACTION)); .resolve(List.of(ContextBlock.FocusedDomain.COGNITION, ContextBlock.FocusedDomain.ACTION, ContextBlock.FocusedDomain.MEMORY, ContextBlock.FocusedDomain.PERCEIVE));
List<BlockContent> communicationBlocks = resolvedContext.getBlocks(); List<BlockContent> communicationBlocks = resolvedContext.getBlocks();
List<Message> historyMessages = snapshotConversationMessages(); List<Message> historyMessages = snapshotConversationMessages();
List<Message> temp = new ArrayList<>(historyMessages.size() + 2); List<Message> temp = new ArrayList<>(historyMessages.size() + 2);

View File

@@ -175,7 +175,7 @@ public class DialogRolling extends AbstractAgentModule.Running<PartnerRunningFlo
private void applyRolling(RollingResult result) { private void applyRolling(RollingResult result) {
cognitionCapability.contextWorkspace().register(new ContextBlock( cognitionCapability.contextWorkspace().register(new ContextBlock(
buildDialogAbstractBlock(result.summary(), result.memoryUnit().getId(), result.memorySlice().getId()), buildDialogAbstractBlock(result.summary(), result.memoryUnit().getId(), result.memorySlice().getId()),
Set.of(ContextBlock.VisibleDomain.MEMORY, ContextBlock.VisibleDomain.COMMUNICATION), Set.of(ContextBlock.FocusedDomain.MEMORY, ContextBlock.FocusedDomain.COMMUNICATION),
20, 20,
5, 5,
10 10

View File

@@ -66,7 +66,7 @@ public class MemorySelector extends AbstractAgentModule.Running<PartnerRunningFl
buildMemoryFullBlock(activatedSlices), buildMemoryFullBlock(activatedSlices),
buildMemoryCompactBlock(activatedSlices), buildMemoryCompactBlock(activatedSlices),
buildMemoryAbstractBlock(activatedSlices), buildMemoryAbstractBlock(activatedSlices),
Set.of(ContextBlock.VisibleDomain.MEMORY), Set.of(ContextBlock.FocusedDomain.MEMORY),
18, 18,
8, 8,
16 16

View File

@@ -50,8 +50,7 @@ public class SliceSelectEvaluator extends AbstractAgentModule.Sub<EvaluatorInput
CountDownLatch latch = new CountDownLatch(preparedSlices.size()); CountDownLatch latch = new CountDownLatch(preparedSlices.size());
Message contextMessage = cognitionCapability.contextWorkspace().resolve(List.of( Message contextMessage = cognitionCapability.contextWorkspace().resolve(List.of(
ContextBlock.VisibleDomain.COGNITION, ContextBlock.FocusedDomain.MEMORY
ContextBlock.VisibleDomain.MEMORY
)).encodeToMessage(); )).encodeToMessage();
for (ActivatedMemorySlice slice : preparedSlices) { for (ActivatedMemorySlice slice : preparedSlices) {

View File

@@ -73,7 +73,7 @@ public class MemorySelectExtractor extends AbstractAgentModule.Sub<ExtractorInpu
private Message resolveContextMessage() { private Message resolveContextMessage() {
return cognitionCapability.contextWorkspace().resolve(List.of( return cognitionCapability.contextWorkspace().resolve(List.of(
ContextBlock.VisibleDomain.COGNITION, ContextBlock.VisibleDomain.MEMORY ContextBlock.FocusedDomain.COMMUNICATION, ContextBlock.FocusedDomain.MEMORY
)).encodeToMessage(); )).encodeToMessage();
} }

View File

@@ -45,8 +45,8 @@ public class MemoryUpdater extends AbstractAgentModule.Standalone implements Aft
Result<MemoryTopicResult> extractResult = formattedChat( Result<MemoryTopicResult> extractResult = formattedChat(
List.of( List.of(
cognitionCapability.contextWorkspace().resolve(List.of( cognitionCapability.contextWorkspace().resolve(List.of(
ContextBlock.VisibleDomain.COGNITION, ContextBlock.FocusedDomain.COGNITION,
ContextBlock.VisibleDomain.MEMORY ContextBlock.FocusedDomain.MEMORY
)).encodeToMessage(), )).encodeToMessage(),
resolveTopicTaskMessage(result, slicedMessages) resolveTopicTaskMessage(result, slicedMessages)
), ),

View File

@@ -38,7 +38,7 @@ public class PerceiveMonitor extends AbstractAgentModule.Running<PartnerRunningF
appendTextElement(document, root, "current_time", ZonedDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); appendTextElement(document, root, "current_time", ZonedDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
} }
}, },
Set.of(ContextBlock.VisibleDomain.COMMUNICATION), Set.of(ContextBlock.FocusedDomain.PERCEIVE),
100, 100,
30, 30,
0 0

View File

@@ -39,7 +39,7 @@ public class ContextExceptionReporter implements ExceptionReporter {
ExceptionReport report = exception.toReport(); ExceptionReport report = exception.toReport();
cognitionCapability.contextWorkspace().register(new ContextBlock( cognitionCapability.contextWorkspace().register(new ContextBlock(
buildExceptionReportBlock(report), buildExceptionReportBlock(report),
Set.of(ContextBlock.VisibleDomain.COGNITION), Set.of(ContextBlock.FocusedDomain.COGNITION),
10, 10,
10, 10,
0 0

View File

@@ -36,19 +36,19 @@ class ContextWorkspaceTest {
blockName = "low", blockName = "low",
source = "source-low", source = "source-low",
content = "low", content = "low",
visibleTo = setOf(ContextBlock.VisibleDomain.COGNITION) visibleTo = setOf(ContextBlock.FocusedDomain.COGNITION)
) )
val midWeight = contextBlock( val midWeight = contextBlock(
blockName = "mid", blockName = "mid",
source = "source-mid", source = "source-mid",
content = "mid", content = "mid",
visibleTo = setOf(ContextBlock.VisibleDomain.MEMORY) visibleTo = setOf(ContextBlock.FocusedDomain.MEMORY)
) )
val highWeight = contextBlock( val highWeight = contextBlock(
blockName = "high", blockName = "high",
source = "source-high", source = "source-high",
content = "high", content = "high",
visibleTo = setOf(ContextBlock.VisibleDomain.ACTION, ContextBlock.VisibleDomain.MEMORY) visibleTo = setOf(ContextBlock.FocusedDomain.ACTION, ContextBlock.FocusedDomain.MEMORY)
) )
manager.register(highWeight) manager.register(highWeight)
@@ -57,9 +57,9 @@ class ContextWorkspaceTest {
val resolved = manager.resolve( val resolved = manager.resolve(
listOf( listOf(
ContextBlock.VisibleDomain.ACTION, ContextBlock.FocusedDomain.ACTION,
ContextBlock.VisibleDomain.MEMORY, ContextBlock.FocusedDomain.MEMORY,
ContextBlock.VisibleDomain.COGNITION ContextBlock.FocusedDomain.COGNITION
) )
) )
@@ -77,27 +77,27 @@ class ContextWorkspaceTest {
source = "main", source = "main",
content = "older", content = "older",
replaceFadeFactor = 20.0, replaceFadeFactor = 20.0,
visibleTo = setOf(ContextBlock.VisibleDomain.MEMORY) visibleTo = setOf(ContextBlock.FocusedDomain.MEMORY)
) )
val newer = contextBlock( val newer = contextBlock(
blockName = "memory", blockName = "memory",
source = "main", source = "main",
content = "newer", content = "newer",
replaceFadeFactor = 20.0, replaceFadeFactor = 20.0,
visibleTo = setOf(ContextBlock.VisibleDomain.MEMORY) visibleTo = setOf(ContextBlock.FocusedDomain.MEMORY)
) )
val otherSource = contextBlock( val otherSource = contextBlock(
blockName = "memory", blockName = "memory",
source = "secondary", source = "secondary",
content = "other-source", content = "other-source",
visibleTo = setOf(ContextBlock.VisibleDomain.MEMORY) visibleTo = setOf(ContextBlock.FocusedDomain.MEMORY)
) )
manager.register(older) manager.register(older)
manager.register(newer) manager.register(newer)
manager.register(otherSource) manager.register(otherSource)
val resolved = manager.resolve(listOf(ContextBlock.VisibleDomain.MEMORY)) val resolved = manager.resolve(listOf(ContextBlock.FocusedDomain.MEMORY))
assertEquals(2, resolved.blocks.size) assertEquals(2, resolved.blocks.size)
assertEquals("other-source", (resolved.blocks[1] as TestBlockContent).content) assertEquals("other-source", (resolved.blocks[1] as TestBlockContent).content)
@@ -117,7 +117,7 @@ class ContextWorkspaceTest {
blockContent = AttributedTestBlockContent("memory", "main", "older", "historic"), blockContent = AttributedTestBlockContent("memory", "main", "older", "historic"),
compactBlock = AttributedTestBlockContent("memory", "main", "older-compact", "historic"), compactBlock = AttributedTestBlockContent("memory", "main", "older-compact", "historic"),
abstractBlock = AttributedTestBlockContent("memory", "main", "older-abstract", "historic"), abstractBlock = AttributedTestBlockContent("memory", "main", "older-abstract", "historic"),
visibleTo = setOf(ContextBlock.VisibleDomain.MEMORY), focusedOn = setOf(ContextBlock.FocusedDomain.MEMORY),
replaceFadeFactor = 20.0, replaceFadeFactor = 20.0,
timeFadeFactor = 0.0, timeFadeFactor = 0.0,
activateFactor = 0.0 activateFactor = 0.0
@@ -128,14 +128,14 @@ class ContextWorkspaceTest {
blockContent = AttributedTestBlockContent("memory", "main", "newer", "latest"), blockContent = AttributedTestBlockContent("memory", "main", "newer", "latest"),
compactBlock = AttributedTestBlockContent("memory", "main", "newer-compact", "latest"), compactBlock = AttributedTestBlockContent("memory", "main", "newer-compact", "latest"),
abstractBlock = AttributedTestBlockContent("memory", "main", "newer-abstract", "latest"), abstractBlock = AttributedTestBlockContent("memory", "main", "newer-abstract", "latest"),
visibleTo = setOf(ContextBlock.VisibleDomain.MEMORY), focusedOn = setOf(ContextBlock.FocusedDomain.MEMORY),
replaceFadeFactor = 20.0, replaceFadeFactor = 20.0,
timeFadeFactor = 0.0, timeFadeFactor = 0.0,
activateFactor = 0.0 activateFactor = 0.0
) )
) )
val resolved = manager.resolve(listOf(ContextBlock.VisibleDomain.MEMORY)) val resolved = manager.resolve(listOf(ContextBlock.FocusedDomain.MEMORY))
val aggregatedXml = resolved.blocks.single().encodeToXmlString() val aggregatedXml = resolved.blocks.single().encodeToXmlString()
assertTrue(aggregatedXml.contains("<snapshot category=\"latest\" source=\"main\" urgency=\"normal\">")) assertTrue(aggregatedXml.contains("<snapshot category=\"latest\" source=\"main\" urgency=\"normal\">"))
@@ -152,20 +152,20 @@ class ContextWorkspaceTest {
source = "main", source = "main",
content = "evicted", content = "evicted",
replaceFadeFactor = 100.0, replaceFadeFactor = 100.0,
visibleTo = setOf(ContextBlock.VisibleDomain.MEMORY) visibleTo = setOf(ContextBlock.FocusedDomain.MEMORY)
) )
val replacement = contextBlock( val replacement = contextBlock(
blockName = "memory", blockName = "memory",
source = "main", source = "main",
content = "replacement", content = "replacement",
replaceFadeFactor = 100.0, replaceFadeFactor = 100.0,
visibleTo = setOf(ContextBlock.VisibleDomain.MEMORY) visibleTo = setOf(ContextBlock.FocusedDomain.MEMORY)
) )
manager.register(evicted) manager.register(evicted)
manager.register(replacement) manager.register(replacement)
val resolved = manager.resolve(listOf(ContextBlock.VisibleDomain.MEMORY)) val resolved = manager.resolve(listOf(ContextBlock.FocusedDomain.MEMORY))
assertEquals(listOf("replacement"), resolved.blocks.map { (it as TestBlockContent).content }) assertEquals(listOf("replacement"), resolved.blocks.map { (it as TestBlockContent).content })
} }
@@ -195,7 +195,7 @@ class ContextWorkspaceTest {
manager.expire("memory", "main") manager.expire("memory", "main")
val resolved = manager.resolve(listOf(ContextBlock.VisibleDomain.MEMORY)) val resolved = manager.resolve(listOf(ContextBlock.FocusedDomain.MEMORY))
assertEquals(listOf("survivor"), resolved.blocks.map { (it as TestBlockContent).content }) assertEquals(listOf("survivor"), resolved.blocks.map { (it as TestBlockContent).content })
} }
@@ -218,7 +218,7 @@ class ContextWorkspaceTest {
manager.expire("memory", "main") manager.expire("memory", "main")
manager.register(restored) manager.register(restored)
val resolved = manager.resolve(listOf(ContextBlock.VisibleDomain.MEMORY)) val resolved = manager.resolve(listOf(ContextBlock.FocusedDomain.MEMORY))
assertEquals(listOf("restored"), resolved.blocks.map { (it as TestBlockContent).content }) assertEquals(listOf("restored"), resolved.blocks.map { (it as TestBlockContent).content })
} }
@@ -233,7 +233,7 @@ class ContextWorkspaceTest {
blockContent = original, blockContent = original,
compactBlock = compact, compactBlock = compact,
abstractBlock = summary, abstractBlock = summary,
visibleTo = setOf(ContextBlock.VisibleDomain.MEMORY), focusedOn = setOf(ContextBlock.FocusedDomain.MEMORY),
replaceFadeFactor = 40.0, replaceFadeFactor = 40.0,
timeFadeFactor = 0.0, timeFadeFactor = 0.0,
activateFactor = 0.0 activateFactor = 0.0
@@ -245,7 +245,7 @@ class ContextWorkspaceTest {
blockContent = original, blockContent = original,
compactBlock = compact, compactBlock = compact,
abstractBlock = summary, abstractBlock = summary,
visibleTo = setOf(ContextBlock.VisibleDomain.MEMORY), focusedOn = setOf(ContextBlock.FocusedDomain.MEMORY),
replaceFadeFactor = 80.0, replaceFadeFactor = 80.0,
timeFadeFactor = 0.0, timeFadeFactor = 0.0,
activateFactor = 0.0 activateFactor = 0.0
@@ -375,17 +375,17 @@ class ContextWorkspaceTest {
content = "full", content = "full",
compactContent = "compact", compactContent = "compact",
abstractContent = "abstract", abstractContent = "abstract",
visibleTo = setOf(ContextBlock.VisibleDomain.MEMORY, ContextBlock.VisibleDomain.ACTION), visibleTo = setOf(ContextBlock.FocusedDomain.MEMORY, ContextBlock.FocusedDomain.ACTION),
replaceFadeFactor = 80.0 replaceFadeFactor = 80.0
) )
block.applyReplaceFade() block.applyReplaceFade()
manager.register(block) manager.register(block)
val primaryResolved = manager.resolve( val primaryResolved = manager.resolve(
listOf(ContextBlock.VisibleDomain.MEMORY, ContextBlock.VisibleDomain.ACTION) listOf(ContextBlock.FocusedDomain.MEMORY, ContextBlock.FocusedDomain.ACTION)
) )
val secondaryResolved = manager.resolve( val secondaryResolved = manager.resolve(
listOf(ContextBlock.VisibleDomain.PERCEIVE, ContextBlock.VisibleDomain.ACTION) listOf(ContextBlock.FocusedDomain.PERCEIVE, ContextBlock.FocusedDomain.ACTION)
) )
assertEquals(listOf("compact"), primaryResolved.blocks.map { (it as TestBlockContent).content }) assertEquals(listOf("compact"), primaryResolved.blocks.map { (it as TestBlockContent).content })
@@ -400,7 +400,7 @@ class ContextWorkspaceTest {
blockContent = TestBlockContent("memory", "main", "full-critical", BlockContent.Urgency.CRITICAL), blockContent = TestBlockContent("memory", "main", "full-critical", BlockContent.Urgency.CRITICAL),
compactBlock = TestBlockContent("memory", "main", "compact-low", BlockContent.Urgency.LOW), compactBlock = TestBlockContent("memory", "main", "compact-low", BlockContent.Urgency.LOW),
abstractBlock = TestBlockContent("memory", "main", "abstract-low", BlockContent.Urgency.LOW), abstractBlock = TestBlockContent("memory", "main", "abstract-low", BlockContent.Urgency.LOW),
visibleTo = setOf(ContextBlock.VisibleDomain.ACTION), focusedOn = setOf(ContextBlock.FocusedDomain.ACTION),
replaceFadeFactor = 20.0, replaceFadeFactor = 20.0,
timeFadeFactor = 0.0, timeFadeFactor = 0.0,
activateFactor = 0.0 activateFactor = 0.0
@@ -411,7 +411,7 @@ class ContextWorkspaceTest {
blockContent = TestBlockContent("memory", "main", "full-normal", BlockContent.Urgency.NORMAL), blockContent = TestBlockContent("memory", "main", "full-normal", BlockContent.Urgency.NORMAL),
compactBlock = TestBlockContent("memory", "main", "compact-normal", BlockContent.Urgency.NORMAL), compactBlock = TestBlockContent("memory", "main", "compact-normal", BlockContent.Urgency.NORMAL),
abstractBlock = TestBlockContent("memory", "main", "abstract-normal", BlockContent.Urgency.NORMAL), abstractBlock = TestBlockContent("memory", "main", "abstract-normal", BlockContent.Urgency.NORMAL),
visibleTo = setOf(ContextBlock.VisibleDomain.ACTION), focusedOn = setOf(ContextBlock.FocusedDomain.ACTION),
replaceFadeFactor = 80.0, replaceFadeFactor = 80.0,
timeFadeFactor = 0.0, timeFadeFactor = 0.0,
activateFactor = 0.0 activateFactor = 0.0
@@ -419,7 +419,7 @@ class ContextWorkspaceTest {
) )
val resolved = manager.resolve( val resolved = manager.resolve(
listOf(ContextBlock.VisibleDomain.PERCEIVE, ContextBlock.VisibleDomain.ACTION) listOf(ContextBlock.FocusedDomain.PERCEIVE, ContextBlock.FocusedDomain.ACTION)
) )
val aggregated = resolved.blocks.single() val aggregated = resolved.blocks.single()
@@ -439,7 +439,7 @@ class ContextWorkspaceTest {
content: String, content: String,
compactContent: String = "${content}-compact", compactContent: String = "${content}-compact",
abstractContent: String = "${content}-abstract", abstractContent: String = "${content}-abstract",
visibleTo: Set<ContextBlock.VisibleDomain> = setOf(ContextBlock.VisibleDomain.MEMORY), visibleTo: Set<ContextBlock.FocusedDomain> = setOf(ContextBlock.FocusedDomain.MEMORY),
replaceFadeFactor: Double = 10.0, replaceFadeFactor: Double = 10.0,
timeFadeFactor: Double = 0.0, timeFadeFactor: Double = 0.0,
activateFactor: Double = 0.0 activateFactor: Double = 0.0
@@ -448,7 +448,7 @@ class ContextWorkspaceTest {
blockContent = TestBlockContent(blockName, source, content), blockContent = TestBlockContent(blockName, source, content),
compactBlock = TestBlockContent(blockName, source, compactContent), compactBlock = TestBlockContent(blockName, source, compactContent),
abstractBlock = TestBlockContent(blockName, source, abstractContent), abstractBlock = TestBlockContent(blockName, source, abstractContent),
visibleTo = visibleTo, focusedOn = visibleTo,
replaceFadeFactor = replaceFadeFactor, replaceFadeFactor = replaceFadeFactor,
timeFadeFactor = timeFadeFactor, timeFadeFactor = timeFadeFactor,
activateFactor = activateFactor activateFactor = activateFactor