PowercontextBuiltinArtifactsmemoryservice

MemoryService

Validate and orchestrate Memory operations without exposing storage details.

Functions

constructor__init__(*, backend, candidate_pipeline=None, embedding_model=None, reranker=None, rerank_candidate_limit=30, source_resolver=None, artifact_resolver=None, id_factory=None, prompt_context=None, write_gate=None, capacity_budget=None, compaction=None, max_history_revisions=100) -> None
parambackendMemoryBackend
paramcandidate_pipelineCandidatePipeline | None
= None
paramembedding_modelEmbeddingModel | None
= None
paramrerankerMemoryReranker | None
= None
paramrerank_candidate_limitint
= 30
paramsource_resolver_SourceResolver | None
= None
paramartifact_resolver_ArtifactResolver | None
= None
paramid_factoryIdFactory | None
= None
paramprompt_contextScopedPrompts | None
= None
paramwrite_gateMemoryWriteGate | None
= None
paramcapacity_budgetMemoryCapacityBudget | None
= None
paramcompactionMemoryCompactionPolicy | None
= None
parammax_history_revisionsint
= 100

Returns

None
funcget(memory) -> Memory

Return the canonical exact Memory Revision matching memory.

parammemoryMemory

Returns

powercontext.builtin.artifacts.memory.models.Memory
funclatest(memory) -> Memory

Return the current head of the same Memory identity.

parammemoryMemory

Returns

powercontext.builtin.artifacts.memory.models.Memory
funcrevisions(memory, /, *, since_revision=0, through_revision=None) -> tuple[Memory, ...]

Return history in ascending order within (since_revision, through_revision].

The upper bound defaults to the current head. The history limit applies to the requested interval, and oversized intervals are never truncated.

parammemoryMemory
paramsince_revisionint
= 0
paramthrough_revisionint | None
= None

Returns

tuple[powercontext.builtin.artifacts.memory.models.Memory, ...]
funchead(artifact_id) -> Memory

Return the current Memory head by its stable Artifact identity.

paramartifact_idstr

Returns

powercontext.builtin.artifacts.memory.models.Memory
funccapacity(memory) -> MemoryCapacity

Measure an exact Revision, including eligible tombstones even when compaction is disabled.

Eligibility can load complete manifests across the tombstone recovery window. Cost scales with their combined size; this is not a cheap counter.

parammemoryMemory

Returns

powercontext.builtin.artifacts.memory.models.MemoryCapacity
func_capacity_limits() -> tuple[tuple[MemoryCapacityDimension, int], ...]

Returns

tuple[tuple[powercontext.builtin.artifacts.memory.models.MemoryCapacityDimension, int], ...]
func_capacity_values(content, content_bytes=None) -> dict[MemoryCapacityDimension, int]
paramcontentMemoryContent
paramcontent_bytesbytes | None
= None

Returns

dict[powercontext.builtin.artifacts.memory.models.MemoryCapacityDimension, int]
func_require_capacity(base, content, *, growth, content_bytes) -> None
parambaseMemory | None
paramcontentMemoryContent
paramgrowthfrozenset[MemoryCapacityDimension]
paramcontent_bytesbytes

Returns

None
func_compactable_entry_ids(memory) -> tuple[str, ...]
parammemoryMemory

Returns

tuple[str, ...]
funccompact(memory, *, dry_run=False, limit=None, reason=None) -> MemoryCompactionResult

Drop aged, untagged tombstones; retain every prior Revision and entry body.

Previews are available while compaction is disabled. Reclaimed bytes are the signed difference of complete canonical contents, including the audit changes and reason, which can outweigh a small manifest reduction.

parammemoryMemory
paramdry_runbool
= False
paramlimitint | None
= None
paramreasonstr | None
= None

Returns

powercontext.builtin.artifacts.memory.models.MemoryCompactionResult
funchead_entries(artifact_id) -> tuple[Memory, tuple[MemoryEntryVersion, ...]]

Return the current Memory head together with its validated entry objects.

entries re-reads the caller's Memory to prove it matches storage, which a head read straight from the backend already satisfies. Callers that need both the head and its entries use this instead, so a read-only pass over many Scopes does not re-fetch every Memory Revision it just loaded.

paramartifact_idstr

Returns

tuple[powercontext.builtin.artifacts.memory.models.Memory, tuple[powercontext.builtin.artifacts.memory.models.MemoryEntryVersion, ...]]
funcrevision(memory) -> Memory

Return one exact Memory Revision by its stable reference.

parammemoryArtifactRef

Returns

powercontext.builtin.artifacts.memory.models.Memory
funcremember(*, memory, sources=(), artifacts=(), entries=(), mode='auto') -> Memory | None

Append or extract validated entry changes against one exact head.

parammemoryMemory | None
paramsourcesSequence[Source]
= ()
paramartifactsSequence[Artifact[object]]
= ()
paramentriesSequence[MemoryEntryInput]
= ()
parammodeMemoryRememberMode
= 'auto'

Returns

powercontext.builtin.artifacts.memory.models.Memory | None
funcplan_remember(*, memory, sources=(), artifacts=(), entries=(), mode='auto') -> MemoryWritePlan

Validate and prepare a write without mutating authoritative storage.

parammemoryMemory | None
paramsourcesSequence[Source]
= ()
paramartifactsSequence[Artifact[object]]
= ()
paramentriesSequence[MemoryEntryInput]
= ()
parammodeMemoryRememberMode
= 'auto'

Returns

powercontext.builtin.artifacts.memory.protocols.MemoryWritePlan
funcapply(plan) -> Memory | None

Apply one prepared write through this service's transaction boundary.

paramplanMemoryWritePlan

Returns

powercontext.builtin.artifacts.memory.models.Memory | None
funcforget(memory, *, entries, reason=None) -> Memory

Deactivate logical entries without deleting immutable content.

parammemoryMemory
paramentriesSequence[MemoryEntryVersion]
paramreasonstr | None
= None

Returns

powercontext.builtin.artifacts.memory.models.Memory
funcreactivate(memory, *, entries, reason=None) -> Memory

Restore inactive logical entries without creating body versions.

parammemoryMemory
paramentriesSequence[MemoryEntryVersion]
paramreasonstr | None
= None

Returns

powercontext.builtin.artifacts.memory.models.Memory
funcorganize(memory, *, mode='default') -> Memory

Apply only exact deduplication and canonical normalization.

parammemoryMemory
parammodeLiteral['default', 'dedupe', 'normalize']
= 'default'

Returns

powercontext.builtin.artifacts.memory.models.Memory
funcchanges(memory, *, since_revision=None) -> tuple[MemoryRevisionChanges, ...]

Read compact change summaries without expanding entry bodies.

parammemoryMemory
paramsince_revisionint | None
= None

Returns

tuple[powercontext.builtin.artifacts.memory.models.MemoryRevisionChanges, ...]
funcsearch(query, *, memories, limit=10, mode='auto', tag_filter=None, admission=None, query_embedding=None) -> MemorySearchResult

Search explicit current Memory heads with capability-safe fallback.

admission=None applies the historical fusion-time thresholds bit for bit.

query_embedding lets a caller reuse a vector it already paid for (RFC 1560's expansion rounds reuse the round-0 vector). Reuse is best-effort and honest: it is applied only when the supplied profile equals the one this search resolved, and the call reports embedding_calls = 0 in that case, 1 when it embedded. The resolved vector is handed back on :attr:MemorySearchResult.query_embedding so the next round can reuse it. When the mode resolved to fts there is no vector to report, so the field stays None and the next round must pay again.

paramquerystr
parammemoriesSequence[Memory]
paramlimitint
= 10
parammodeMemorySearchMode
= 'auto'
paramtag_filterTagFilter | None
= None
paramadmissionAdmissionFloor | None
= None
paramquery_embeddingMemoryQueryEmbedding | None
= None

Returns

powercontext.builtin.artifacts.memory.models.MemorySearchResult
func_resolve_query_vector(*, query, requested_mode, selected_mode, profile, capabilities, reuse) -> tuple[MemoryUsedSearchMode, tuple[float, ...] | None, MemoryQueryEmbedding | None, int]

Resolve — or reuse — the query vector for a vector or hybrid search.

Returns (selected_mode, query_vector, resolved_embedding, embedding_calls). resolved_embedding is None exactly when the search fell back to fts, which is also when the caller must drop the embedding profile from the backend request.

Reuse applies only when the supplied profile equals the resolved one; otherwise the round embeds and reports one call. A failed embedding is still counted as one call, because the call was issued — the cost is real even though it produced nothing.

paramquerystr
paramrequested_modeMemorySearchMode
paramselected_modeMemoryUsedSearchMode
paramprofileEmbeddingProfile
paramcapabilitiesMemoryCapabilities
paramreuseMemoryQueryEmbedding | None

Returns

tuple[powercontext.builtin.artifacts.memory.models.MemoryUsedSearchMode, tuple[float, ...] | None, powercontext.builtin.artifacts.memory.models.MemoryQueryEmbedding | None, int]
func_reranked_search_result(*, mode, query, hits, limit, admission=None, embedding_calls=0, query_embedding=None) -> MemorySearchResult

Apply the optional reranker and report what this search paid and admitted.

generation_calls counts the RFC 0080 rerank call this search actually issued: 1 when the reranker ran over a non-empty pool, 0 otherwise. It is never inferred from configuration — a deployment whose rerank flag is on but whose reranker did not run reports 0, which is the honest number.

parammodeMemoryUsedSearchMode
paramquerystr
paramhitstuple[MemoryHit, ...]
paramlimitint
paramadmissionAdmissionCounts | None
= None
paramembedding_callsint
= 0
paramquery_embeddingMemoryQueryEmbedding | None
= None

Returns

powercontext.builtin.artifacts.memory.models.MemorySearchResult
funcexpand(hits, *, layer='full') -> tuple[MemoryEntryVersion, ...]

Expand exact hit anchors and reject cross-Revision substitutions.

paramhitsSequence[MemoryHit]
paramlayerLiteral['full']
= 'full'

Returns

tuple[powercontext.builtin.artifacts.memory.models.MemoryEntryVersion, ...]
funcentries(memory, /, *, tag_filter=None) -> tuple[MemoryEntryVersion, ...]

Return the entry objects referenced by one exact current Memory head.

parammemoryMemory
paramtag_filterTagFilter | None
= None

Returns

tuple[powercontext.builtin.artifacts.memory.models.MemoryEntryVersion, ...]
funcrebuild_projections(embedding_model=None) -> None

Rebuild current-head search projections from authoritative Memory revisions.

paramembedding_modelEmbeddingModel | None
= None

Returns

None
funcvalidate_citation(citation) -> MemoryEntryVersion

Resolve one exact Handoff citation.

paramcitationMemoryCitation

Returns

powercontext.builtin.artifacts.memory.models.MemoryEntryVersion
func_validate_search_heads(memories) -> None
parammemoriestuple[Memory, ...]

Returns

None
func_select_search_mode(requested, *, memories, capabilities) -> MemoryUsedSearchMode
paramrequestedMemorySearchMode
parammemoriestuple[ArtifactRef, ...]
paramcapabilitiesMemoryCapabilities

Returns

powercontext.builtin.artifacts.memory.models.MemoryUsedSearchMode
func_deduplicate_manifest(manifest, current_by_entry) -> tuple[list[MemoryChange], set[str]]
parammanifestdict[str, MemoryManifestEntry]
paramcurrent_by_entrydict[str, MemoryEntryVersion]

Returns

tuple[list[powercontext.builtin.artifacts.memory.models.MemoryChange], set[str]]
func_normalize_manifest_entries(base, manifest, current_by_entry, *, skip) -> tuple[list[MemoryChange], list[MemoryEntryVersion]]
parambaseMemory
parammanifestdict[str, MemoryManifestEntry]
paramcurrent_by_entrydict[str, MemoryEntryVersion]
paramskipset[str]

Returns

tuple[list[powercontext.builtin.artifacts.memory.models.MemoryChange], list[powercontext.builtin.artifacts.memory.models.MemoryEntryVersion]]
func_set_entry_state(memory, *, entries, target_state, reason) -> Memory
parammemoryMemory
paramentriesSequence[MemoryEntryVersion]
paramtarget_stateLiteral['active', 'inactive']
paramreasonstr | None

Returns

powercontext.builtin.artifacts.memory.models.Memory
func_commit_existing_transition(*, base, manifest, changes, current_by_entry, entry_versions, growth=frozenset()) -> Memory
parambaseMemory
parammanifestdict[str, MemoryManifestEntry]
paramchangesSequence[MemoryChange]
paramcurrent_by_entrydict[str, MemoryEntryVersion]
paramentry_versionstuple[MemoryEntryVersion, ...]
paramgrowthfrozenset[MemoryCapacityDimension]
= frozenset()

Returns

powercontext.builtin.artifacts.memory.models.Memory
func_validate_anchor(*, memory_ref, entry_id, entry_version_id, version) -> None
parammemory_refArtifactRef
paramentry_idstr
paramentry_version_idstr
paramversionMemoryEntryVersion

Returns

None
func_prepare_projections(*, base, manifest_entries, versions_by_entry, changed_version_ids) -> tuple[MemoryProjection, ...]

Build active-head projections, reusing unchanged vectors and embedding only changes.

parambaseMemory | None
parammanifest_entriestuple[MemoryManifestEntry, ...]
paramversions_by_entrydict[str, MemoryEntryVersion]
paramchanged_version_idsfrozenset[str]

Returns

tuple[powercontext.builtin.artifacts.memory.protocols.MemoryProjection, ...]
func_previous_projections(base) -> dict[str, MemoryProjection]
parambaseMemory | None

Returns

dict[str, powercontext.builtin.artifacts.memory.protocols.MemoryProjection]
func_cache_projections(committed, projections) -> None
paramcommittedMemory
paramprojectionstuple[MemoryProjection, ...]

Returns

None
func_attach_embeddings(projections, embed_indices) -> tuple[MemoryProjection, ...]
paramprojectionstuple[MemoryProjection, ...]
paramembed_indicesSequence[int]

Returns

tuple[powercontext.builtin.artifacts.memory.protocols.MemoryProjection, ...]
func_embed_texts(texts, profile, *, query=False) -> tuple[EmbeddingVector, ...]
paramtextstuple[str, ...]
paramprofileEmbeddingProfile
paramquerybool
= False

Returns

tuple[powercontext.builtin.inference.EmbeddingVector, ...]
func_canonical_base(memory) -> Memory | None
parammemoryMemory | None

Returns

powercontext.builtin.artifacts.memory.models.Memory | None
func_canonical_memory(memory) -> Memory
parammemoryMemory

Returns

powercontext.builtin.artifacts.memory.models.Memory
func_canonical_operation_evidence(sources, artifacts) -> _OperationEvidence
paramsourcesSequence[Source]
paramartifactsSequence[Artifact[object]]

Returns

powercontext.builtin.artifacts.memory.service._OperationEvidence
func_validated_entries(memory) -> tuple[MemoryEntryVersion, ...]
parammemoryMemory

Returns

tuple[powercontext.builtin.artifacts.memory.models.MemoryEntryVersion, ...]
func_candidates(mode, entries, evidence, current_entries, *, active_version_ids) -> tuple[MemoryEntryInput, ...]
parammodeLiteral['append', 'extract']
paramentriestuple[MemoryEntryInput, ...]
paramevidence_OperationEvidence
paramcurrent_entriestuple[MemoryEntryVersion, ...]
paramactive_version_idsfrozenset[str]

Returns

tuple[powercontext.builtin.artifacts.memory.models.MemoryEntryInput, ...]
func_assess_write(base, candidates, evidence, current_entries) -> MemoryWriteAssessment | None

Ask the configured gate about one candidate set; None means no gate is active.

parambaseMemory | None
paramcandidatestuple[MemoryEntryInput, ...]
paramevidence_OperationEvidence
paramcurrent_entriestuple[MemoryEntryVersion, ...] | None

Returns

powercontext.builtin.artifacts.memory.protocols.MemoryWriteAssessment | None
func_gate_evidence(base, candidates, evidence, current_entries) -> _GateEvidenceProjection
parambaseMemory | None
paramcandidatestuple[MemoryEntryInput, ...]
paramevidence_OperationEvidence
paramcurrent_entriestuple[MemoryEntryVersion, ...] | None

Returns

powercontext.builtin.artifacts.memory.service._GateEvidenceProjection
func_gate_candidate_evidence(base, candidates, evidence, current_entries) -> tuple[_GateCandidateEvidence, ...]
parambaseMemory | None
paramcandidatestuple[MemoryEntryInput, ...]
paramevidence_OperationEvidence
paramcurrent_entriestuple[MemoryEntryVersion, ...] | None

Returns

tuple[powercontext.builtin.artifacts.memory.service._GateCandidateEvidence, ...]
func_candidate_gate_evidence(candidate) -> tuple[_GateEvidenceEntry, ...]
paramcandidate_GateCandidateEvidence

Returns

tuple[powercontext.builtin.artifacts.memory.service._GateEvidenceEntry, ...]
func_source_gate_evidence(candidate_index, source) -> _GateEvidenceEntry
paramcandidate_indexint
paramsourceSource

Returns

powercontext.builtin.artifacts.memory.service._GateEvidenceEntry
func_artifact_gate_evidence(candidate_index, artifact) -> _GateEvidenceEntry
paramcandidate_indexint
paramartifactArtifact[object]

Returns

powercontext.builtin.artifacts.memory.service._GateEvidenceEntry
func_source_ref_gate_evidence(candidate_index, ref) -> _GateEvidenceEntry
paramcandidate_indexint
paramrefSourceRef

Returns

powercontext.builtin.artifacts.memory.service._GateEvidenceEntry
func_artifact_ref_gate_evidence(candidate_index, ref) -> _GateEvidenceEntry
paramcandidate_indexint
paramrefArtifactRef

Returns

powercontext.builtin.artifacts.memory.service._GateEvidenceEntry
func_write_gate_policy_id() -> str

Returns

str
func_prepare_commit(*, base, candidates, evidence, current_entries, flagged_reason=None) -> MemoryCommit | None
parambaseMemory | None
paramcandidatestuple[MemoryEntryInput, ...]
paramevidence_OperationEvidence
paramcurrent_entriestuple[MemoryEntryVersion, ...] | None
paramflagged_reasonstr | None
= None

Returns

powercontext.builtin.artifacts.memory.protocols.MemoryCommit | None
func_claim_revision_target(candidate, base, current_by_entry, targeted) -> tuple[str, MemoryEntryVersion]
paramcandidateMemoryEntryInput
parambaseMemory | None
paramcurrent_by_entrydict[str, MemoryEntryVersion]
paramtargetedset[str]

Returns

tuple[str, powercontext.builtin.artifacts.memory.models.MemoryEntryVersion]
func_material_from_candidate(candidate, allowed_sources, allowed_artifacts, *, previous=None) -> _EntryMaterial
paramcandidateMemoryEntryInput
paramallowed_sourcesSequence[Source]
paramallowed_artifactsSequence[Artifact[object]]
parampreviousMemoryEntryVersion | None
= None

Returns

powercontext.builtin.artifacts.memory.service._EntryMaterial
func_canonical_candidate_sources(values, allowed) -> tuple[Source, ...]
paramvaluesSequence[Source]
paramallowedSequence[Source]

Returns

tuple[powercontext.sources.Source, ...]
func_canonical_candidate_artifacts(values, allowed, previous) -> tuple[ArtifactRef, ...]
paramvaluesSequence[Artifact[object]]
paramallowedSequence[Artifact[object]]
parampreviousSequence[ArtifactRef]

Returns

tuple[powercontext.artifacts.ArtifactRef, ...]
func_material_from_version(version) -> _EntryMaterial
paramversionMemoryEntryVersion

Returns

powercontext.builtin.artifacts.memory.service._EntryMaterial
func_entry_material(*, kind, text, sources, artifacts) -> _EntryMaterial
paramkindstr
paramtextstr
paramsourcesSequence[SourceRef]
paramartifactsSequence[ArtifactRef]

Returns

powercontext.builtin.artifacts.memory.service._EntryMaterial
func_source_refs(sources) -> tuple[SourceRef, ...]
paramsourcesSequence[Source]

Returns

tuple[powercontext.sources.SourceRef, ...]
func_new_entry_version(*, memory_id, entry_id, previous, material, created_in_revision) -> MemoryEntryVersion
parammemory_idstr
paramentry_idstr
parampreviousMemoryEntryVersion | None
parammaterial_EntryMaterial
paramcreated_in_revisionint

Returns

powercontext.builtin.artifacts.memory.models.MemoryEntryVersion
func_new_id(kind) -> str
paramkindstr

Returns

str

On this page