@sema-agent/core 5.46.0 → 5.47.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/dist/agents/subagent.js +129 -2
  3. package/dist/core/governance-codes.d.ts +13 -0
  4. package/dist/core/governance-codes.js +33 -0
  5. package/dist/core/memory-engine/delegation-settlement.d.ts +318 -0
  6. package/dist/core/memory-engine/delegation-settlement.js +661 -0
  7. package/dist/core/memory-engine/engine.d.ts +159 -1
  8. package/dist/core/memory-engine/engine.js +699 -15
  9. package/dist/core/memory-engine/file-backend.d.ts +1 -0
  10. package/dist/core/memory-engine/file-backend.js +3 -1
  11. package/dist/core/memory-engine/frontmatter.d.ts +46 -19
  12. package/dist/core/memory-engine/frontmatter.js +91 -77
  13. package/dist/core/memory-engine/index.d.ts +4 -3
  14. package/dist/core/memory-engine/index.js +3 -2
  15. package/dist/core/memory-engine/layout.d.ts +14 -0
  16. package/dist/core/memory-engine/layout.js +2 -2
  17. package/dist/core/memory-engine/memory-backend-contract.js +43 -0
  18. package/dist/core/memory-engine/origin-clearance.d.ts +66 -0
  19. package/dist/core/memory-engine/origin-clearance.js +84 -0
  20. package/dist/core/memory-engine/provenance-wording.d.ts +50 -0
  21. package/dist/core/memory-engine/provenance-wording.js +15 -0
  22. package/dist/core/memory-engine/tools.d.ts +61 -7
  23. package/dist/core/memory-engine/tools.js +34 -9
  24. package/dist/core/memory-engine/types.d.ts +70 -2
  25. package/dist/core/runner/prepare-memory.js +50 -15
  26. package/dist/core/runner/prepare-task.d.ts +24 -0
  27. package/dist/core/runner/prepare-task.js +80 -10
  28. package/dist/core/session-reconcile.js +3 -2
  29. package/dist/core/types.d.ts +38 -3
  30. package/dist/core/types.js +3 -0
  31. package/dist/index.d.ts +2 -1
  32. package/dist/index.js +2 -1
  33. package/dist/tools/task-list.d.ts +5 -1
  34. package/package.json +1 -1
  35. package/test/export-surface.snapshot.json +10 -2
@@ -433,6 +433,30 @@ export interface Prepared {
433
433
  trustedTools: ReadonlySet<string>;
434
434
  execIsExternalContent: boolean;
435
435
  };
436
+ /**
437
+ * design/336 §3.3 — the delegation-settlement handle: the control-plane coordinates a
438
+ * settlement writer needs, as PURE DATA. Consumers (the subagent background leg's write-ahead
439
+ * + terminal observation, the tool wrap's sync unattestable row) can outlive this prepared
440
+ * leg, so they rebuild their write handle from these fields alone — never from the live
441
+ * engine/session objects above. Present only under `memoryProvenance: "carry"` (the default):
442
+ * an `"off"` deployment keeps the pre-336 accepted-cost posture byte-level.
443
+ */
444
+ settlement?: {
445
+ /** The WRITE plane's control-plane dir (the pollution-marker/lineage sidecar home). */
446
+ controlDir: string;
447
+ sessionId: string;
448
+ provenance: "carry";
449
+ };
450
+ /**
451
+ * design/336 §5.5 (file-face half) — the Read-tool recall-taint judgment, present only under
452
+ * `memoryProvenance: "carry"`. True ⇔ the delivered ABSOLUTE path sits inside a mounted memory
453
+ * plane and its head bytes carry a committed external-origin marker; the tool wrap then marks
454
+ * the session derived (same seat and cause as the memory_get propagation). Never throws;
455
+ * relative paths and unreadable files answer false (named residuals beside the Bash channel).
456
+ */
457
+ recallTaint?: {
458
+ judgeDeliveredPath: (absPath: string) => boolean;
459
+ };
436
460
  };
437
461
  /** A per-task env minted by `RunnerDeps.executionEnvFactory` (design/48 remote seam) that THIS task owns
438
462
  * and the Runner must tear down on task end. Undefined when the env came from a (caller-owned) static
@@ -47,9 +47,10 @@ import { TOOL_SEARCH_NAME, buildDeferredRegistry, classifyDeferred, extractDisco
47
47
  import { createSharedMemoryTools } from "../shared-memory/tools.js";
48
48
  import { SHARED_MEMORY_TOOL_NAMES } from "../shared-memory/types.js";
49
49
  import { MEMORY_ENGINE_TOOL_NAMES } from "../memory-engine/tools.js";
50
- import { MEMORY_RECALL_DISCIPLINE } from "../memory-engine/engine.js";
50
+ import { memoryRecallDisciplineSegment } from "../memory-engine/engine.js";
51
51
  import { classifyToolContentOrigin, contentOriginPollutes, delegationCallIsExternal } from "../memory-engine/content-origin.js";
52
52
  import { narrowContentSafety, readCardAttestation } from "../memory-engine/delegation-provenance.js";
53
+ import { recordSyncUnattestable, sessionSettlements } from "../memory-engine/delegation-settlement.js";
53
54
  import { composeMemoryBlock } from "../memory.js";
54
55
  import { COMPLIANCE_CAPABILITIES, WEB_FETCH_TOOL_NAME, complianceCallDenial, resolveComplianceDenies } from "../compliance.js";
55
56
  import { foldAdmissionFreeze } from "../memory-admission.js";
@@ -733,6 +734,8 @@ export async function prepareTask(spec, deps, sessions, resume, internals, runne
733
734
  const frozenOnQuestion = spec.onQuestion ?? deps.onQuestion;
734
735
  const provenanceForChildrenRef = {};
735
736
  const delegationProvenanceForChildren = () => provenanceForChildrenRef.current;
737
+ const delegationSettlementRef = {};
738
+ const delegationSettlementForChildren = () => delegationSettlementRef.current;
736
739
  const inheritedGateForChildren = () => {
737
740
  const ancestorRules = [
738
741
  ...(inheritedAncestorRules ?? []),
@@ -828,6 +831,7 @@ export async function prepareTask(spec, deps, sessions, resume, internals, runne
828
831
  activeSkillScope: () => skillScope.active(),
829
832
  inheritedGateForChildren,
830
833
  delegationProvenanceForChildren,
834
+ delegationSettlement: delegationSettlementForChildren,
831
835
  ...(autoModeDecider ? { autoModeReview: { decider: autoModeDecider } } : {}),
832
836
  ...(spec.durableApproval !== undefined ? { durableApprovalForChildren: { ...spec.durableApproval } } : {}),
833
837
  ...(spec.checkpointStore === null ? { checkpointStoreDisabledForChildren: true } : {}),
@@ -1863,12 +1867,13 @@ export async function prepareTask(spec, deps, sessions, resume, internals, runne
1863
1867
  if (memoryEnginePair.length > 0) {
1864
1868
  memoryEnginePairMounted = false;
1865
1869
  if (memoryBlock !== undefined) {
1866
- if (memoryBlock === MEMORY_RECALL_DISCIPLINE)
1870
+ const segment = memoryRecallDisciplineSegment(memoryProvenance);
1871
+ if (memoryBlock === segment)
1867
1872
  memoryBlock = undefined;
1868
- else if (memoryBlock.includes(`\n\n${MEMORY_RECALL_DISCIPLINE}`))
1869
- memoryBlock = memoryBlock.replace(`\n\n${MEMORY_RECALL_DISCIPLINE}`, "");
1870
- else if (memoryBlock.startsWith(`${MEMORY_RECALL_DISCIPLINE}\n\n`))
1871
- memoryBlock = memoryBlock.slice(MEMORY_RECALL_DISCIPLINE.length + 2);
1873
+ else if (memoryBlock.includes(`\n\n${segment}`))
1874
+ memoryBlock = memoryBlock.replace(`\n\n${segment}`, "");
1875
+ else if (memoryBlock.startsWith(`${segment}\n\n`))
1876
+ memoryBlock = memoryBlock.slice(segment.length + 2);
1872
1877
  }
1873
1878
  deps.onError?.(new Error(`Memory tools ${MEMORY_ENGINE_TOOL_NAMES.join("/")} were NOT mounted: mounting them would inject ` +
1874
1879
  `the "${TOOL_SEARCH_NAME}" tool, whose name this task already declares — the pair mounts together or not at all.`), { phase: "config", sessionId, classification: "memory-tools-not-mounted" });
@@ -1891,6 +1896,9 @@ export async function prepareTask(spec, deps, sessions, resume, internals, runne
1891
1896
  const trustedTools = effectiveSafety.trustedTools;
1892
1897
  const execIsExternalContent = effectiveSafety.execIsExternalContent;
1893
1898
  provenanceForChildrenRef.current = { trustedTools: [...trustedTools], execIsExternalContent };
1899
+ if (memoryEngineSession?.settlement !== undefined) {
1900
+ delegationSettlementRef.current = { controlDir: memoryEngineSession.settlement.controlDir, sessionId: memoryEngineSession.settlement.sessionId };
1901
+ }
1894
1902
  const recordExternal = () => {
1895
1903
  if (delegationProvenanceChannel !== undefined)
1896
1904
  delegationProvenanceChannel.ref.current.sawExternal = true;
@@ -1920,6 +1928,7 @@ export async function prepareTask(spec, deps, sessions, resume, internals, runne
1920
1928
  isCallerTool: true,
1921
1929
  trusted: trustedTools.has(t.name),
1922
1930
  }), execIsExternalContent);
1931
+ const recallTaintJudge = memoryEngineSession?.recallTaint?.judgeDeliveredPath;
1923
1932
  contentOriginWrapRef.current = () => {
1924
1933
  for (let i = 0; i < tools.length; i++) {
1925
1934
  const t = tools[i];
@@ -1929,7 +1938,8 @@ export async function prepareTask(spec, deps, sessions, resume, internals, runne
1929
1938
  const delegation = delegationByName.get(t.name);
1930
1939
  const isDelegation = delegation !== undefined;
1931
1940
  const pollutes = contentOriginPollutes(origin, execIsExternalContent);
1932
- if (!pollutes && !isDelegation) {
1941
+ const readsMemoryPlane = recallTaintJudge !== undefined && t.name === "Read";
1942
+ if (!pollutes && !isDelegation && !readsMemoryPlane) {
1933
1943
  contentOriginWrapped.add(t);
1934
1944
  continue;
1935
1945
  }
@@ -1948,8 +1958,39 @@ export async function prepareTask(spec, deps, sessions, resume, internals, runne
1948
1958
  mark(`tool "${t.name}" (${origin} content class) was invoked in this session`, "observed");
1949
1959
  recordExternal();
1950
1960
  }
1951
- if (!isDelegation)
1952
- return inner(toolCallId, params, signal, onUpdate);
1961
+ if (!isDelegation) {
1962
+ if (!readsMemoryPlane)
1963
+ return inner(toolCallId, params, signal, onUpdate);
1964
+ const result = await inner(toolCallId, params, signal, onUpdate);
1965
+ const raw = result;
1966
+ const contentField = typeof raw === "object" && raw !== null ? raw.content : undefined;
1967
+ const headText = typeof raw === "string"
1968
+ ? raw
1969
+ : typeof contentField === "string"
1970
+ ? contentField
1971
+ : Array.isArray(contentField) && typeof contentField[0]?.text === "string"
1972
+ ? contentField[0].text
1973
+ : "";
1974
+ const delivered = result?.isError !== true &&
1975
+ result?.details?.type !== "file_unchanged" &&
1976
+ !headText.startsWith("<system-reminder");
1977
+ const fp = params?.file_path;
1978
+ if (delivered && typeof fp === "string" && recallTaintJudge(fp)) {
1979
+ mark(`the "${t.name}" tool delivered the content of an external-origin memory entry file`, "derived");
1980
+ }
1981
+ return result;
1982
+ }
1983
+ let preCallLaunchRows;
1984
+ if (delegationEvidenceAttestedOnly && memoryEngineSession?.settlement !== undefined) {
1985
+ try {
1986
+ preCallLaunchRows = new Set(sessionSettlements(memoryEngineSession.settlement.controlDir, memoryEngineSession.settlement.sessionId)
1987
+ .filter((r) => r.row.lane === "background" && r.row.toolUseId === toolCallId)
1988
+ .map((r) => r.row.settleId));
1989
+ }
1990
+ catch {
1991
+ preCallLaunchRows = undefined;
1992
+ }
1993
+ }
1953
1994
  const requested = params?.subagent_type;
1954
1995
  const external = delegationCallIsExternal({
1955
1996
  requestedType: typeof requested === "string" ? requested : undefined,
@@ -1971,7 +2012,36 @@ export async function prepareTask(spec, deps, sessions, resume, internals, runne
1971
2012
  if (!delegationEvidenceAttestedOnly) {
1972
2013
  mark(staticFaceReason, "static");
1973
2014
  }
1974
- else if (pollution !== undefined && !staticMarkWaiverAnnounced) {
2015
+ else {
2016
+ const receiptDetails = result?.details;
2017
+ const claimsLaunchReceipt = receiptDetails !== undefined && receiptDetails !== null && receiptDetails.status === "async_launched";
2018
+ const claimedSettleId = claimsLaunchReceipt && typeof receiptDetails.settle_id === "string" ? receiptDetails.settle_id : undefined;
2019
+ const settlementSeat = memoryEngineSession?.settlement;
2020
+ let isLaunchReceipt = false;
2021
+ if (claimsLaunchReceipt && settlementSeat !== undefined) {
2022
+ try {
2023
+ isLaunchReceipt =
2024
+ preCallLaunchRows !== undefined &&
2025
+ claimedSettleId !== undefined &&
2026
+ !preCallLaunchRows.has(claimedSettleId) &&
2027
+ sessionSettlements(settlementSeat.controlDir, settlementSeat.sessionId).some((r) => r.row.lane === "background" && r.row.settleId === claimedSettleId && r.row.toolUseId === toolCallId);
2028
+ }
2029
+ catch {
2030
+ isLaunchReceipt = false;
2031
+ }
2032
+ }
2033
+ if (!isLaunchReceipt && settlementSeat !== undefined) {
2034
+ try {
2035
+ recordSyncUnattestable(settlementSeat.controlDir, { sessionId: settlementSeat.sessionId, toolCallId, now: Date.now });
2036
+ }
2037
+ catch (err) {
2038
+ const e = new Error(`delegated output withheld (fail-closed): the delegation delivered without a provable attestation and the settlement account could not record the fact (${err instanceof Error ? err.message : String(err)}) — repair the memory control plane or retry`);
2039
+ e.code = "memory.settlement_record_failed";
2040
+ throw e;
2041
+ }
2042
+ }
2043
+ }
2044
+ if (delegationEvidenceAttestedOnly && pollution !== undefined && !staticMarkWaiverAnnounced) {
1975
2045
  staticMarkWaiverAnnounced = true;
1976
2046
  const waivedReason = inlineUntrusted(staticFaceReason, 200);
1977
2047
  deliverEngineNotice(deps.onNotice, {
@@ -9,7 +9,8 @@ const INTERRUPTED_IDEMPOTENT = "[INTERRUPTED] The previous run ended before this
9
9
  "may not have taken effect. It is safe to REPLAY: re-issuing the same call converges the state to " +
10
10
  "what you intended. If you decide not to re-issue it, verify the current state first.";
11
11
  const INTERRUPTED_NEVER_STARTED = "[INTERRUPTED] The run was aborted before this tool call started. It was never executed and had " +
12
- "no side effects it is safe to re-issue this call if you still need it.";
12
+ "no side effects. If the run was stopped by a pending approval or an unresolved gate, wait for it " +
13
+ "to be resolved before re-issuing; re-issuing is otherwise safe if you still need this call.";
13
14
  const INTERRUPTED_REPEAT_UNKNOWN = "[INTERRUPTED] Same as an earlier interrupted call in this batch: no result was recorded and the outcome is " +
14
15
  "UNKNOWN — verify before relying on it.";
15
16
  const INTERRUPTED_REPEAT_SAFE = "[INTERRUPTED] Same as an earlier interrupted call in this batch: this tool is read-only/idempotent, so just " +
@@ -17,7 +18,7 @@ const INTERRUPTED_REPEAT_SAFE = "[INTERRUPTED] Same as an earlier interrupted ca
17
18
  const INTERRUPTED_REPEAT_IDEMPOTENT = "[INTERRUPTED] Same as an earlier interrupted call in this batch: it is safe to REPLAY — re-issue it, or verify " +
18
19
  "the current state if you decide not to.";
19
20
  const INTERRUPTED_REPEAT_NEVER_STARTED = "[INTERRUPTED] Same as an earlier interrupted call in this batch: it never started and had no side effects — " +
20
- "safe to re-issue.";
21
+ "re-issuing is safe once whatever stopped the run is resolved.";
21
22
  const REPEAT_TEXT = {
22
23
  never_started: INTERRUPTED_REPEAT_NEVER_STARTED,
23
24
  read: INTERRUPTED_REPEAT_SAFE,
@@ -868,6 +868,20 @@ export interface ToolExecuteContext {
868
868
  * {@link inheritedGateForChildren}: never a model/tool argument, never a TaskSpec field.
869
869
  */
870
870
  delegationProvenanceForChildren?: () => import("./memory-engine/delegation-provenance.js").DelegationContentSafety | undefined;
871
+ /**
872
+ * design/336 §3.3 — the delegation-settlement account's coordinates (the WRITE plane's memory
873
+ * control dir + this session's id), Runner-filled when the run mounts a memory session under
874
+ * `memoryProvenance: "carry"`. A delegation tool's BACKGROUND lane writes its launch write-ahead
875
+ * (pending row BEFORE registration and invoke) and its terminal settle through these — as pure
876
+ * data, because the terminal observation can run after this task leg returned and must rebuild
877
+ * its write handle from the coordinates alone. Undefined ⇒ no settlement account (memory-less
878
+ * run, or `"off"`): the background lane launches without rows, the pre-336 accepted-cost shape.
879
+ * Same trust posture as {@link delegationProvenanceForChildren}: never a model/tool argument.
880
+ */
881
+ delegationSettlement?: () => {
882
+ controlDir: string;
883
+ sessionId: string;
884
+ } | undefined;
871
885
  /**
872
886
  * RB-201 FO-3 (form-one audit, CC 220 `Ipd`/`ein` parity) — the auto-mode classifier decider ARMED
873
887
  * for THIS task (`RuntimeCaps.autoMode === true` AND `RunnerDeps.autoMode` both present; the same
@@ -4751,9 +4765,24 @@ export interface EngineNotice {
4751
4765
  * HARVEST that withheld at least one entry file (a checkpoint harvest and the terminal harvest
4752
4766
  * are distinct facts), never minted for a clean session; `detail: { count, moved, escalated,
4753
4767
  * reason?, sessionId? }` (`reason` absent ⇔ the pollution marker could not be re-read at report
4754
- * time — the withheld count stays true either way). Registered gap: the derived index (`MEMORY.md`) is
4755
- * contained on a path that mints no rejection row, so an index-ONLY containment produces no
4756
- * notice and is disclosed by the harvest report's warnings alone.
4768
+ * time — the withheld count stays true either way). The formerly registered index-only gap is
4769
+ * CLOSED under `memoryProvenance: "carry"` (design/336 §6.3, #331): the mint condition reads
4770
+ * `HarvestReport.containment`, so a containment whose only act was the derived-index rollback
4771
+ * announces with `count: 0` and `detail.indexRolledBack: true`; under `"off"` the pre-336
4772
+ * count>0 condition (and its silence on index-only containment) is kept byte-level.
4773
+ * - `"memory.hold_opened"` / `"memory.hold_released"` / `"memory.hold_disposed"` (design/336
4774
+ * §4/§6.3) — the instruction-hold lifecycle, derived from the same structured
4775
+ * `HarvestReport.containment` signal (hold seats are only ever filled under
4776
+ * `memoryProvenance: "carry"`): a PENDING session's instruction-form entry files were captured
4777
+ * off the model-visible plane (`hold_opened`, `detail: { count, paths, sessionId? }` — paths
4778
+ * neutralized/length-bounded); previously held entries re-walked the full gate set and
4779
+ * committed after their writer session settled clean or a host valve released them
4780
+ * (`hold_released`); held entries moved to control-plane quarantine (`hold_disposed`,
4781
+ * `detail.disposed: [{ path, terminal }]` with the closed terminal set
4782
+ * dirty/expired/conflict/capture_lost/discarded — an `expired` terminal is explicitly a
4783
+ * TIMEOUT, not a conviction, and the message names `resolveHold` as the recovery valve). At
4784
+ * most one notice per family per harvest report; wording is factual, never threat-flavored
4785
+ * (the design/336 §13-2 model-psyche guardrail).
4757
4786
  * - `"memory.delegation_static_mark_waived"` (design/324, #324 ruling ①) — the deployment set
4758
4787
  * {@link RunnerDeps.memoryDelegationEvidence} to `"attested-only"` and a delegation call whose
4759
4788
  * STATIC tool-face verdict would have marked this session's memory polluted (attestation
@@ -4781,6 +4810,12 @@ export interface EngineNotice {
4781
4810
  message: string;
4782
4811
  /** Machine-readable facts of the notice (knob names, arriving values, values in force). */
4783
4812
  detail?: Record<string, unknown>;
4813
+ /** The owning session, when the notice HAS one — the wire-routing attribution key (a
4814
+ * session-scoped notice can be projected onto that session's event stream; a session-less code
4815
+ * structurally cannot). Mint sites do not set this: {@link deliverEngineNotice} — the ONE
4816
+ * delivery throat — lifts a string `detail.sessionId` here, so the typed key and the detail
4817
+ * carriage can never disagree. Optional and absent for process/config-scoped codes. */
4818
+ sessionId?: string;
4784
4819
  }
4785
4820
  /** Test seam (mirrors `__resetBashTimeoutAnnouncements`): never called by production code. */
4786
4821
  export declare function __resetMalformedNoticeSeatAnnouncement(): void;
@@ -24,6 +24,9 @@ export function __resetMalformedNoticeSeatAnnouncement() {
24
24
  malformedNoticeSeatAnnounced = false;
25
25
  }
26
26
  export function deliverEngineNotice(onNotice, notice) {
27
+ if (notice.sessionId === undefined && typeof notice.detail?.["sessionId"] === "string") {
28
+ notice = { ...notice, sessionId: notice.detail["sessionId"] };
29
+ }
27
30
  if (typeof onNotice === "function") {
28
31
  try {
29
32
  const r = onNotice(notice);
package/dist/index.d.ts CHANGED
@@ -61,6 +61,7 @@ export { BUILTIN_COMPLIANCE_DENIES, COMPLIANCE_CAPABILITIES, WEB_FETCH_TOOL_NAME
61
61
  export { admitMemoryScopes, foldAdmissionFreeze, type OwnOrgAdmissionVerdict, type MemoryAdmissionInput, type MemoryAdmissionOutcome, type MemoryAdmissionVerdict, type MemoryScopeAdmission, type MemoryScopeOrigin, type MemoryScopeRequest, } from "./core/memory-admission.js";
62
62
  export { assertRetentionCapability, type ManagedRetentionCapability, type RetentionDeclaration, type RetentionDeclaring, type RetentionPolicy, type RetentionReceipt, } from "./core/retention.js";
63
63
  export { GOVERNANCE_CODES, governanceRetryClass, type GovernanceCode, type GovernanceRetryClass } from "./core/governance-codes.js";
64
+ export { NOTICE_AUDIENCE, noticeAudienceOf } from "./core/governance-codes.js";
64
65
  export { TtlSessionStore, type TtlSessionStoreOptions, type EvictPolicy } from "./core/session-store.js";
65
66
  export { reconcileInterruptedSession, findOrphanToolCalls, type OrphanToolCall, type ReconcileReport, } from "./core/session-reconcile.js";
66
67
  export { StoredSession, InMemorySessionRepo, InMemorySessionStorage, BaseSessionStorage, leafIdAfterEntry, validateEntriesForImport, StreamingImportValidator, boundedTail, SessionError, isSessionConflict, hasSessionFork, uuidv7, type Session, type SessionStore, type AcquiredSession, type SessionStoreSummary, type SessionStorage, type SessionRepo, type SessionMetadata, type SessionTreeEntry, type SessionWriteOptions, } from "./core/session.js";
@@ -167,7 +168,7 @@ export { AdoptionError, assertAdoptionBootGate, readRootAdoptionFile, writeRootA
167
168
  export { adoptLocalDataRoot, ackAdoptionConfig, witnessAdoptionConfig, listAdoptionQuarantine, readAdoptionStatus, type AdoptionStatus, type AdoptLocalDataRootOptions, type AdoptLocalDataRootResult, type AdoptionCarriageLeg, type AdoptionCarriageLegContext, type AdoptionConfigWitnessReceipt, } from "./stores/file/adoption/adopt.js";
168
169
  export { formatHookFeedback, runToolGate, createHookEnvCapabilities, createPreToolUseConstraintPolicy, type PersistedRuleHit, type PersistedRuleUnreadable, type PersistedRuleAnswer, normalizePersistedRuleHit, type Hooks, type HookToolContext, type HookInvocationIdentity, type UserPromptSubmitContext, type PostToolBatchContext, type HookEnvCapabilities, type HookToolOutput, type PreToolUseResult, type PostToolUseResult, type UserPromptSubmitResult, type HookToolFailure, type PostToolUseFailureResult, type PostToolBatchCall, type PostToolBatchResult, type PreCompactContext, type PreCompactResult, type PostCompactContext, type StopFailureContext, type PermissionDeniedPayload, type PermissionDeniedSource, } from "./core/hooks.js";
169
170
  export { InMemoryMemoryStore, composeMemoryBlock, composeLayeredMemoryBlock, normalizeMemorySpec, type NormalizedMemorySpec, type MemorySpecInput, supportsConsolidation, supportsPeriodicConsolidation, firstSentence, expandLexicalTerms, lexicalSearchMatch, type Embedder, classifyPromotable, enforcePromotableWriteGate, guardedMemoryStore, MemoryGateError, detectSecret, enforceSecretWriteGate, enforceStructuredNoteSecretGate, type UtilityGate, type MemoryStore, type MemoryVectorMode, type ScoredMemory, type MemoryNoteHeader, type MemoryNoteRecord, type MemoryNoteType, type StructuredNoteInput, } from "./core/memory.js";
170
- export { MemoryEngine, FileMemoryEngineBackend, memoryBackendContract, assertMemoryBackendSearchEquivalence, type MemoryBackendContractHooks, buildMemoryInstruction, truncateIndex, scanEntryFiles, deriveRepoKey, deriveRepoMemoryDir, deriveControlPlaneDir, deriveRepoControlPlaneDir, resolveMemoryEngineRoot, scopeDirName, ControlPlaneCorruptError, parseEntryFile, serializeEntryFile, computeEntryRev, entryFromFile, MEMORY_ORIGIN_CAUSES, committedOriginOf, originEquals, isInstructionEntry, type MemoryEntryOrigin, type MemoryOriginCause, MEMORY_INSTRUCTION_TEMPLATE, MEMORY_RECALL_DISCIPLINE, MEMORY_PREFERENCE_DISCIPLINE, MEMORY_READONLY_NOTICE, readV2HeaderHints, type V2HeaderHints, LINEAGE_FILE, CHALLENGES_FILE, CHALLENGED_HISTORY_FILE, CHALLENGE_LEDGER_MAX_EVENTS, rebuildStrictControlPlaneLedger, type ControlPlaneRebuildReceipt, type StrictControlPlaneLedger, type ChallengeAssignment, type ChallengeEvent, type ChallengedHistoryRow, type LineagePendingTxn, type LineagePromotion, MEMORY_INDEX_FILENAME, MEMORY_INDEX_MAX_LINES, MEMORY_INDEX_MAX_BYTES, MEMORY_SEARCH_TOOL_NAME, MEMORY_GET_TOOL_NAME, MEMORY_ENGINE_TOOL_NAMES, type MemorySearchDetails, type MemorySearchHit, type MemoryGetDetails, STUB_ARCHIVED_LINE, DEFAULT_MAX_MEMORY_FILES, DEFAULT_MAX_ENTRY_DEPTH, DEFAULT_HARVEST_DEADLINE_MS, DEFAULT_HARVEST_FILE_BUDGET, MASS_DELETION_FUSE_RATIO, scanMemoryWrite, scanMemoryFileName, scanRemediation, MEMORY_FILENAME_SEGMENT_RE, renderAnnouncements, enqueueMemoryAnnouncement, drainMemoryAnnouncements, peekMemoryAnnouncements, bumpScanFuse, scanFuseCount, clearScanFuse, ANNOUNCEMENTS_FILE, MEMORY_ANNOUNCEMENTS_MAX, SCAN_FUSE_FILE, SCAN_FUSE_THRESHOLD, type MemoryAnnouncement, type ScanFinding, type MemoryEngineOptions, type MemoryInjection, type EntryProvenanceAccount, type TransferEvidence, type CommittedBinding, type CommittedEntrySnapshot, type CommittedScopeSnapshots, type EntryCustodyReport, erasureSelectHash, type EraseMemoryEntriesInput, type ErasureSelect, type ErasedBinding, type MemoryErasureAttestation, computeMemoryBundleHash, type MemoryExportBundle, type MemoryImportReport, type MemoryExportSnapshot, type MemoryBundleImportPlan, type BundleChallengeRow, type BundleLineageRow, type BundlePollutedSession, type MemoryBackend, type MemoryEntry, type MemoryEntryFrontmatter, type MemoryEntryHeader, type ScoredMemoryEntry, type NotePatch, type PatchReport, type MaterializedFile, type MemorySessionHandle, type HarvestReport, type HarvestRejection, type HarvestRejectionCode, type ParsedEntryFile, type ScannedEntryFile, SCOPE_SEGMENT_MAX_ENCODED, PROJECT_MARKER_PATH, encodeScopeSegment, decodeScopeSegment, parseScopeKey, formatUserScope, formatOrgScope, formatProjScope, formatUserProjScope, isPersonalScope, assertScopeContractPlacement, formatProjectMarker, parseProjectMarker, resolveProjectId, PROJECT_ID_REGEX, type ParsedScopeKey, migrateScope, type MigrateScopeReport, materializeEntriesToFiles, harvestFilesToPatches, projectionsToWriteBack, screenInboundEntries, REMOTE_HARVEST_PER_FILE_BYTES, REMOTE_MASS_DELETION_FUSE_RATIO, type RemoteMemoryFile, type RemoteMemoryBaseline, type RemoteMaterialization, type RemoteHarvestResult, type InboundEntryFinding, deriveProjectMemoryDir, deriveProjectControlDir, recordProjectIdHint, lookupProjectIdHint, PROJECT_ID_HINTS_FILE, reconcileMemoryEntries, nextSyncBaseline, mergeRecallHits, type MemorySyncCursor, type MemorySyncConflict, type MemorySyncPlan, type RecallSource, syncMemoryScope, type MemorySyncTransport, type MemorySyncRequestBody, type MemorySyncResponseBody, type MemorySyncClientConflict, type SyncMemoryScopeOptions, type MemorySyncClientResult, } from "./core/memory-engine/index.js";
171
+ export { MemoryEngine, FileMemoryEngineBackend, memoryBackendContract, assertMemoryBackendSearchEquivalence, type MemoryBackendContractHooks, buildMemoryInstruction, truncateIndex, scanEntryFiles, deriveRepoKey, deriveRepoMemoryDir, deriveControlPlaneDir, deriveRepoControlPlaneDir, resolveMemoryEngineRoot, scopeDirName, ControlPlaneCorruptError, parseEntryFile, serializeEntryFile, computeEntryRev, entryFromFile, MEMORY_ORIGIN_CAUSES, committedOriginOf, originEquals, ambiguousOriginRepresentation, isInstructionEntry, type MemoryEntryOrigin, type MemoryOriginCause, MEMORY_INSTRUCTION_TEMPLATE, MEMORY_RECALL_DISCIPLINE, MEMORY_PREFERENCE_DISCIPLINE, MEMORY_READONLY_NOTICE, readV2HeaderHints, type V2HeaderHints, LINEAGE_FILE, CHALLENGES_FILE, CHALLENGED_HISTORY_FILE, CHALLENGE_LEDGER_MAX_EVENTS, rebuildStrictControlPlaneLedger, type ControlPlaneRebuildReceipt, type StrictControlPlaneLedger, type ChallengeAssignment, type ChallengeEvent, type ChallengedHistoryRow, type LineagePendingTxn, type LineagePromotion, MEMORY_INDEX_FILENAME, MEMORY_INDEX_MAX_LINES, MEMORY_INDEX_MAX_BYTES, MEMORY_SEARCH_TOOL_NAME, MEMORY_GET_TOOL_NAME, MEMORY_ENGINE_TOOL_NAMES, type MemorySearchDetails, type MemorySearchHit, type CleanMemorySearchHit, type ExposedMemorySearchHit, MEMORY_EXPOSURE_BANNER, MEMORY_EXPOSURE_HANDLE_TAG, memoryExposureIndexRow, type MemoryGetDetails, STUB_ARCHIVED_LINE, DEFAULT_MAX_MEMORY_FILES, DEFAULT_MAX_ENTRY_DEPTH, DEFAULT_HARVEST_DEADLINE_MS, DEFAULT_HARVEST_FILE_BUDGET, MASS_DELETION_FUSE_RATIO, scanMemoryWrite, scanMemoryFileName, scanRemediation, MEMORY_FILENAME_SEGMENT_RE, renderAnnouncements, enqueueMemoryAnnouncement, drainMemoryAnnouncements, peekMemoryAnnouncements, bumpScanFuse, scanFuseCount, clearScanFuse, ANNOUNCEMENTS_FILE, MEMORY_ANNOUNCEMENTS_MAX, SCAN_FUSE_FILE, SCAN_FUSE_THRESHOLD, type MemoryAnnouncement, type ScanFinding, type MemoryEngineOptions, type MemoryInjection, type EntryProvenanceAccount, type TransferEvidence, type CommittedBinding, type CommittedEntrySnapshot, type CommittedScopeSnapshots, type EntryCustodyReport, erasureSelectHash, type EraseMemoryEntriesInput, type ErasureSelect, type ErasedBinding, type MemoryErasureAttestation, computeMemoryBundleHash, type MemoryExportBundle, type MemoryImportReport, type MemoryExportSnapshot, type MemoryBundleImportPlan, type BundleChallengeRow, type BundleLineageRow, type BundlePollutedSession, type MemoryBackend, type MemoryEntry, type MemoryEntryFrontmatter, type MemoryEntryHeader, type ScoredMemoryEntry, type NotePatch, type PatchReport, type MaterializedFile, type MemorySessionHandle, type HarvestReport, type HarvestRejection, type HarvestRejectionCode, type ParsedEntryFile, type ScannedEntryFile, SCOPE_SEGMENT_MAX_ENCODED, PROJECT_MARKER_PATH, encodeScopeSegment, decodeScopeSegment, parseScopeKey, formatUserScope, formatOrgScope, formatProjScope, formatUserProjScope, isPersonalScope, assertScopeContractPlacement, formatProjectMarker, parseProjectMarker, resolveProjectId, PROJECT_ID_REGEX, type ParsedScopeKey, migrateScope, type MigrateScopeReport, materializeEntriesToFiles, harvestFilesToPatches, projectionsToWriteBack, screenInboundEntries, REMOTE_HARVEST_PER_FILE_BYTES, REMOTE_MASS_DELETION_FUSE_RATIO, type RemoteMemoryFile, type RemoteMemoryBaseline, type RemoteMaterialization, type RemoteHarvestResult, type InboundEntryFinding, deriveProjectMemoryDir, deriveProjectControlDir, recordProjectIdHint, lookupProjectIdHint, PROJECT_ID_HINTS_FILE, reconcileMemoryEntries, nextSyncBaseline, mergeRecallHits, type MemorySyncCursor, type MemorySyncConflict, type MemorySyncPlan, type RecallSource, syncMemoryScope, type MemorySyncTransport, type MemorySyncRequestBody, type MemorySyncResponseBody, type MemorySyncClientConflict, type SyncMemoryScopeOptions, type MemorySyncClientResult, } from "./core/memory-engine/index.js";
171
172
  export { SHARED_MEMORY_READ_CAP_BYTES, SHARED_MEMORY_LIST_PAGE_SIZE, SharedMemoryStoreError, type SharedMemoryStoreProvider, type SharedMemoryStoreReader, type SharedMemoryPagedList, type SharedMemoryStoreInfo, type SharedMemoryDocumentEntry, type SharedMemorySnapshot, type SharedMemoryRequestContext, type MemoryListDetails, type MemoryReadDetails, } from "./core/shared-memory/types.js";
172
173
  export { sharedMemoryStoreContract, type SharedMemoryFixture, type SharedMemoryStoreContractHooks, } from "./core/shared-memory/contract.js";
173
174
  export { termSet, jaccardDistance, cosineDistance } from "./core/memory-vector.js";
package/dist/index.js CHANGED
@@ -49,6 +49,7 @@ export { BUILTIN_COMPLIANCE_DENIES, COMPLIANCE_CAPABILITIES, WEB_FETCH_TOOL_NAME
49
49
  export { admitMemoryScopes, foldAdmissionFreeze, } from "./core/memory-admission.js";
50
50
  export { assertRetentionCapability, } from "./core/retention.js";
51
51
  export { GOVERNANCE_CODES, governanceRetryClass } from "./core/governance-codes.js";
52
+ export { NOTICE_AUDIENCE, noticeAudienceOf } from "./core/governance-codes.js";
52
53
  export { TtlSessionStore } from "./core/session-store.js";
53
54
  export { reconcileInterruptedSession, findOrphanToolCalls, } from "./core/session-reconcile.js";
54
55
  export { StoredSession, InMemorySessionRepo, InMemorySessionStorage, BaseSessionStorage, leafIdAfterEntry, validateEntriesForImport, StreamingImportValidator, boundedTail, SessionError, isSessionConflict, hasSessionFork, uuidv7, } from "./core/session.js";
@@ -129,7 +130,7 @@ export { AdoptionError, assertAdoptionBootGate, readRootAdoptionFile, writeRootA
129
130
  export { adoptLocalDataRoot, ackAdoptionConfig, witnessAdoptionConfig, listAdoptionQuarantine, readAdoptionStatus, } from "./stores/file/adoption/adopt.js";
130
131
  export { formatHookFeedback, runToolGate, createHookEnvCapabilities, createPreToolUseConstraintPolicy, normalizePersistedRuleHit, } from "./core/hooks.js";
131
132
  export { InMemoryMemoryStore, composeMemoryBlock, composeLayeredMemoryBlock, normalizeMemorySpec, supportsConsolidation, supportsPeriodicConsolidation, firstSentence, expandLexicalTerms, lexicalSearchMatch, classifyPromotable, enforcePromotableWriteGate, guardedMemoryStore, MemoryGateError, detectSecret, enforceSecretWriteGate, enforceStructuredNoteSecretGate, } from "./core/memory.js";
132
- export { MemoryEngine, FileMemoryEngineBackend, memoryBackendContract, assertMemoryBackendSearchEquivalence, buildMemoryInstruction, truncateIndex, scanEntryFiles, deriveRepoKey, deriveRepoMemoryDir, deriveControlPlaneDir, deriveRepoControlPlaneDir, resolveMemoryEngineRoot, scopeDirName, ControlPlaneCorruptError, parseEntryFile, serializeEntryFile, computeEntryRev, entryFromFile, MEMORY_ORIGIN_CAUSES, committedOriginOf, originEquals, isInstructionEntry, MEMORY_INSTRUCTION_TEMPLATE, MEMORY_RECALL_DISCIPLINE, MEMORY_PREFERENCE_DISCIPLINE, MEMORY_READONLY_NOTICE, readV2HeaderHints, LINEAGE_FILE, CHALLENGES_FILE, CHALLENGED_HISTORY_FILE, CHALLENGE_LEDGER_MAX_EVENTS, rebuildStrictControlPlaneLedger, MEMORY_INDEX_FILENAME, MEMORY_INDEX_MAX_LINES, MEMORY_INDEX_MAX_BYTES, MEMORY_SEARCH_TOOL_NAME, MEMORY_GET_TOOL_NAME, MEMORY_ENGINE_TOOL_NAMES, STUB_ARCHIVED_LINE, DEFAULT_MAX_MEMORY_FILES, DEFAULT_MAX_ENTRY_DEPTH, DEFAULT_HARVEST_DEADLINE_MS, DEFAULT_HARVEST_FILE_BUDGET, MASS_DELETION_FUSE_RATIO, scanMemoryWrite, scanMemoryFileName, scanRemediation, MEMORY_FILENAME_SEGMENT_RE, renderAnnouncements, enqueueMemoryAnnouncement, drainMemoryAnnouncements, peekMemoryAnnouncements, bumpScanFuse, scanFuseCount, clearScanFuse, ANNOUNCEMENTS_FILE, MEMORY_ANNOUNCEMENTS_MAX, SCAN_FUSE_FILE, SCAN_FUSE_THRESHOLD, erasureSelectHash, computeMemoryBundleHash, SCOPE_SEGMENT_MAX_ENCODED, PROJECT_MARKER_PATH, encodeScopeSegment, decodeScopeSegment, parseScopeKey, formatUserScope, formatOrgScope, formatProjScope, formatUserProjScope, isPersonalScope, assertScopeContractPlacement, formatProjectMarker, parseProjectMarker, resolveProjectId, PROJECT_ID_REGEX, migrateScope, materializeEntriesToFiles, harvestFilesToPatches, projectionsToWriteBack, screenInboundEntries, REMOTE_HARVEST_PER_FILE_BYTES, REMOTE_MASS_DELETION_FUSE_RATIO, deriveProjectMemoryDir, deriveProjectControlDir, recordProjectIdHint, lookupProjectIdHint, PROJECT_ID_HINTS_FILE, reconcileMemoryEntries, nextSyncBaseline, mergeRecallHits, syncMemoryScope, } from "./core/memory-engine/index.js";
133
+ export { MemoryEngine, FileMemoryEngineBackend, memoryBackendContract, assertMemoryBackendSearchEquivalence, buildMemoryInstruction, truncateIndex, scanEntryFiles, deriveRepoKey, deriveRepoMemoryDir, deriveControlPlaneDir, deriveRepoControlPlaneDir, resolveMemoryEngineRoot, scopeDirName, ControlPlaneCorruptError, parseEntryFile, serializeEntryFile, computeEntryRev, entryFromFile, MEMORY_ORIGIN_CAUSES, committedOriginOf, originEquals, ambiguousOriginRepresentation, isInstructionEntry, MEMORY_INSTRUCTION_TEMPLATE, MEMORY_RECALL_DISCIPLINE, MEMORY_PREFERENCE_DISCIPLINE, MEMORY_READONLY_NOTICE, readV2HeaderHints, LINEAGE_FILE, CHALLENGES_FILE, CHALLENGED_HISTORY_FILE, CHALLENGE_LEDGER_MAX_EVENTS, rebuildStrictControlPlaneLedger, MEMORY_INDEX_FILENAME, MEMORY_INDEX_MAX_LINES, MEMORY_INDEX_MAX_BYTES, MEMORY_SEARCH_TOOL_NAME, MEMORY_GET_TOOL_NAME, MEMORY_ENGINE_TOOL_NAMES, MEMORY_EXPOSURE_BANNER, MEMORY_EXPOSURE_HANDLE_TAG, memoryExposureIndexRow, STUB_ARCHIVED_LINE, DEFAULT_MAX_MEMORY_FILES, DEFAULT_MAX_ENTRY_DEPTH, DEFAULT_HARVEST_DEADLINE_MS, DEFAULT_HARVEST_FILE_BUDGET, MASS_DELETION_FUSE_RATIO, scanMemoryWrite, scanMemoryFileName, scanRemediation, MEMORY_FILENAME_SEGMENT_RE, renderAnnouncements, enqueueMemoryAnnouncement, drainMemoryAnnouncements, peekMemoryAnnouncements, bumpScanFuse, scanFuseCount, clearScanFuse, ANNOUNCEMENTS_FILE, MEMORY_ANNOUNCEMENTS_MAX, SCAN_FUSE_FILE, SCAN_FUSE_THRESHOLD, erasureSelectHash, computeMemoryBundleHash, SCOPE_SEGMENT_MAX_ENCODED, PROJECT_MARKER_PATH, encodeScopeSegment, decodeScopeSegment, parseScopeKey, formatUserScope, formatOrgScope, formatProjScope, formatUserProjScope, isPersonalScope, assertScopeContractPlacement, formatProjectMarker, parseProjectMarker, resolveProjectId, PROJECT_ID_REGEX, migrateScope, materializeEntriesToFiles, harvestFilesToPatches, projectionsToWriteBack, screenInboundEntries, REMOTE_HARVEST_PER_FILE_BYTES, REMOTE_MASS_DELETION_FUSE_RATIO, deriveProjectMemoryDir, deriveProjectControlDir, recordProjectIdHint, lookupProjectIdHint, PROJECT_ID_HINTS_FILE, reconcileMemoryEntries, nextSyncBaseline, mergeRecallHits, syncMemoryScope, } from "./core/memory-engine/index.js";
133
134
  export { SHARED_MEMORY_READ_CAP_BYTES, SHARED_MEMORY_LIST_PAGE_SIZE, SharedMemoryStoreError, } from "./core/shared-memory/types.js";
134
135
  export { sharedMemoryStoreContract, } from "./core/shared-memory/contract.js";
135
136
  export { termSet, jaccardDistance, cosineDistance } from "./core/memory-vector.js";
@@ -43,7 +43,11 @@ export interface TaskListItem {
43
43
  * process ({@link createTaskListTools} keeps a per-store promise chain) — a store shared across
44
44
  * PROCESSES additionally needs its own transactional guarantees for those sequences, which is the
45
45
  * deployment's half (documented, not solved here; CC's file-backed team list has the same window).
46
- * - `allocateId` is store-owned so concurrent teammates never mint colliding ids.
46
+ * - `allocateId` is store-owned so concurrent teammates never mint colliding ids, and the
47
+ * high-water mark is MONOTONIC ACROSS REOPENS for any backend that outlives one wrapper
48
+ * instance: a restart/reconnect must never re-mint an id the backend has already handed out
49
+ * (the conformance suite's durable tier pins exactly this — a counter that resets while the
50
+ * rows survive makes every receipt lie and every subsequent update miss).
47
51
  * - Value semantics: `get`/`list` return detached copies; `set` stores a detached copy. Callers
48
52
  * mutate their copy and write it back — a live-reference store would alias already-emitted events.
49
53
  * - RB-274: `list` is ordered by ID (numeric ascending), not by write order. The tool lane always
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sema-agent/core",
3
- "version": "5.46.0",
3
+ "version": "5.47.0",
4
4
  "description": "Stateless, task-oriented AI agent core",
5
5
  "type": "module",
6
6
  "license": "BUSL-1.1",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "_comment": "design/87 L3 — frozen public export surface of src/index.ts (name -> kind). DO NOT edit by hand to silence a red test. A removed/changed entry = a SemVer-BREAKING change; bump MAJOR and update this fixture in the SAME commit (design/87 §4.2 / §5.2). Regenerate via REGEN in test/export-surface.test.ts.",
3
- "count": 1617,
3
+ "count": 1625,
4
4
  "exports": {
5
5
  "A2ATaskState": "type",
6
6
  "A2ATaskStateReversal": "type",
@@ -172,6 +172,7 @@
172
172
  "CheckpointSummary": "interface",
173
173
  "CheckpointToken": "type",
174
174
  "CircuitBreakerOptions": "interface",
175
+ "CleanMemorySearchHit": "interface",
175
176
  "CodeReviewMode": "type",
176
177
  "CodeToolsConfig": "interface",
177
178
  "CommittedBinding": "type",
@@ -279,6 +280,7 @@
279
280
  "ExecutionError": "class",
280
281
  "ExecutionErrorCode": "type",
281
282
  "ExplainInput": "interface",
283
+ "ExposedMemorySearchHit": "interface",
282
284
  "ExternalNotificationInput": "interface",
283
285
  "F012_CHECKPOINT_VERSION": "variable",
284
286
  "FABLE_5_COMPAT": "variable",
@@ -429,6 +431,8 @@
429
431
  "MCP_PREFIX": "variable",
430
432
  "MEMORY_ANNOUNCEMENTS_MAX": "variable",
431
433
  "MEMORY_ENGINE_TOOL_NAMES": "variable",
434
+ "MEMORY_EXPOSURE_BANNER": "variable",
435
+ "MEMORY_EXPOSURE_HANDLE_TAG": "variable",
432
436
  "MEMORY_FILENAME_SEGMENT_RE": "variable",
433
437
  "MEMORY_GET_TOOL_NAME": "variable",
434
438
  "MEMORY_GUIDANCE": "variable",
@@ -498,7 +502,7 @@
498
502
  "MemoryScopeOrigin": "type",
499
503
  "MemoryScopeRequest": "interface",
500
504
  "MemorySearchDetails": "interface",
501
- "MemorySearchHit": "interface",
505
+ "MemorySearchHit": "type",
502
506
  "MemorySelectRequest": "interface",
503
507
  "MemorySelector": "type",
504
508
  "MemorySessionHandle": "interface",
@@ -525,6 +529,7 @@
525
529
  "ModelTier": "type",
526
530
  "MonitorTimers": "interface",
527
531
  "MonitorToolOptions": "interface",
532
+ "NOTICE_AUDIENCE": "variable",
528
533
  "NO_PERSISTENT_MEMORY_NOTICE": "variable",
529
534
  "NamedToolPolicy": "type",
530
535
  "NamedWorkflowListing": "interface",
@@ -1105,6 +1110,7 @@
1105
1110
  "adoptLocalDataRoot": "function",
1106
1111
  "advanceCursorAfterInline": "function",
1107
1112
  "agentWhenToUseText": "function",
1113
+ "ambiguousOriginRepresentation": "function",
1108
1114
  "analyzePromptCacheFriendliness": "function",
1109
1115
  "appendHopToken": "function",
1110
1116
  "appendPendingSteer": "function",
@@ -1393,6 +1399,7 @@
1393
1399
  "materializeMcpTools": "function",
1394
1400
  "maybeCompact": "function",
1395
1401
  "memoryBackendContract": "function",
1402
+ "memoryExposureIndexRow": "function",
1396
1403
  "mergeRecallHits": "function",
1397
1404
  "mergeWorkflowArgs": "function",
1398
1405
  "migrateScope": "function",
@@ -1412,6 +1419,7 @@
1412
1419
  "normalizePromptEpoch": "function",
1413
1420
  "normalizeRules": "function",
1414
1421
  "normalizeToolResultProvenance": "function",
1422
+ "noticeAudienceOf": "function",
1415
1423
  "ok": "function",
1416
1424
  "openSystemReminder": "function",
1417
1425
  "orgRuleStatePersistenceOf": "function",