@sema-agent/core 7.25.1 → 7.26.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 (65) hide show
  1. package/CHANGELOG.md +59 -0
  2. package/dist/core/ask-origin.d.ts +84 -0
  3. package/dist/core/ask-origin.js +31 -3
  4. package/dist/core/auto-compaction.d.ts +5 -0
  5. package/dist/core/auto-compaction.js +7 -0
  6. package/dist/core/auto-mode-directive.d.ts +45 -0
  7. package/dist/core/auto-mode-directive.js +47 -0
  8. package/dist/core/checkpoint-store.d.ts +10 -1
  9. package/dist/core/engine-notice.d.ts +10 -0
  10. package/dist/core/gate-lanes.js +18 -10
  11. package/dist/core/governance-codes.d.ts +1 -1
  12. package/dist/core/governance-codes.js +3 -0
  13. package/dist/core/hooks.d.ts +3 -0
  14. package/dist/core/mcp-probe.d.ts +122 -0
  15. package/dist/core/mcp-probe.js +132 -0
  16. package/dist/core/memory-engine/engine.d.ts +6 -1
  17. package/dist/core/memory-engine/engine.js +30 -2
  18. package/dist/core/memory-engine/index.d.ts +1 -0
  19. package/dist/core/memory-engine/index.js +1 -0
  20. package/dist/core/memory-engine/shadowing.d.ts +58 -0
  21. package/dist/core/memory-engine/shadowing.js +40 -0
  22. package/dist/core/memory-engine/tools.d.ts +33 -1
  23. package/dist/core/memory-engine/tools.js +136 -31
  24. package/dist/core/memory-engine/types.d.ts +10 -0
  25. package/dist/core/memory.d.ts +60 -0
  26. package/dist/core/memory.js +47 -2
  27. package/dist/core/permission-rule-store.d.ts +51 -8
  28. package/dist/core/permission-rule-store.js +112 -65
  29. package/dist/core/reminder-mint.d.ts +41 -0
  30. package/dist/core/reminder-mint.js +55 -0
  31. package/dist/core/runner/compaction-restate.d.ts +9 -0
  32. package/dist/core/runner/compaction-restate.js +20 -0
  33. package/dist/core/runner/contracts.d.ts +18 -1
  34. package/dist/core/runner/denial-limit-arms.js +1 -1
  35. package/dist/core/runner/permission-rule-lanes.d.ts +5 -17
  36. package/dist/core/runner/permission-rule-lanes.js +5 -23
  37. package/dist/core/runner/prepare-ask-lane.js +2 -0
  38. package/dist/core/runner/prepare-context-lane.d.ts +4 -0
  39. package/dist/core/runner/prepare-context-lane.js +7 -2
  40. package/dist/core/runner/prepare-inherited-gate.d.ts +5 -1
  41. package/dist/core/runner/prepare-inherited-gate.js +4 -2
  42. package/dist/core/runner/prepare-memory.js +47 -6
  43. package/dist/core/runner/prepare-park-ask.js +1 -0
  44. package/dist/core/runner/prepare-policy-chain.js +8 -4
  45. package/dist/core/runner/prepare-suspend-saga.d.ts +2 -0
  46. package/dist/core/runner/prepare-suspend-saga.js +3 -1
  47. package/dist/core/runner/prepare-task.js +7 -4
  48. package/dist/core/runner/run-leg.js +9 -1
  49. package/dist/core/runner/run-recovery-lanes.js +2 -2
  50. package/dist/core/runner/run-terminal-adoption.js +2 -2
  51. package/dist/core/runner/run-turn-boundary.js +2 -2
  52. package/dist/core/store-contracts/permission-rule-write-contract.d.ts +20 -0
  53. package/dist/core/store-contracts/permission-rule-write-contract.js +77 -0
  54. package/dist/core/task-result.d.ts +11 -0
  55. package/dist/core/task-spec.d.ts +31 -0
  56. package/dist/core/tool-catalog-entries.js +3 -3
  57. package/dist/core/tool-policy.d.ts +38 -0
  58. package/dist/core/tool-policy.js +5 -1
  59. package/dist/core/types.d.ts +1 -1
  60. package/dist/index.d.ts +7 -2
  61. package/dist/index.js +6 -1
  62. package/dist/stores/file/permission-rule-store.js +48 -29
  63. package/package.json +1 -1
  64. package/test/export-surface.snapshot.json +29 -1
  65. package/wire-changes/core@7.26.0.json +695 -0
@@ -35,6 +35,11 @@ export type ImageInput = {
35
35
  * shell-gated ask (`RiskDescriptor.shellGateDoctrine`) and folds across a delegation chain (max-rank: `off` <
36
36
  * `classify` < `always`). One closed set; every seat that names a doctrine spells it through this alias. */
37
37
  export type ShellGateDoctrine = "off" | "classify" | "always";
38
+ /** The approval POSTURE a host declares for a task — {@link TaskSpec.approverPosture}'s value set: a
39
+ * statement about who answers this run's approval cards, never an instruction to the gate. One word
40
+ * today (`"bypass"` — the host answers every card itself, automatically). The engine only RENDERS it,
41
+ * so adding a word here changes what the model is told and nothing else. */
42
+ export type ApproverPosture = "bypass";
38
43
  export interface TaskSpec {
39
44
  taskId?: string;
40
45
  /** The instruction / latest user message for this turn. */
@@ -924,6 +929,32 @@ export interface TaskSpec {
924
929
  * deployment's face and the resuming principal's deny bit are judged afresh on every leg.
925
930
  */
926
931
  autoModeRequested?: true;
932
+ /**
933
+ * The host's declared APPROVER POSTURE for this task — a typed fact seat, the same ownership split
934
+ * as {@link shellGate} and {@link autoModeRequested}: the service layer declares it (it is the layer
935
+ * that knows who sits at the cards), core only CONSUMES it. `"bypass"` says the host answers every
936
+ * approval card itself, automatically.
937
+ *
938
+ * **The gate does not read it.** Cards are raised, routed and recorded byte-identically with and
939
+ * without this seat — no rule is relaxed, no ask is skipped, no decision is pre-empted. The seat's
940
+ * one effect is that the ENGINE tells the model which posture the run is under, in its own marked
941
+ * `<system-reminder>` on the first turn. That is the whole point of the seat: a posture is a fact of
942
+ * the run, and a host that instead splices the sentence into the objective hands the model
943
+ * reminder-shaped text with no engine mark, which the mark declaration tells it to treat as data and
944
+ * flag. One fact, one seat, one mint.
945
+ *
946
+ * Absent ⇒ no posture declared, zero bytes rendered (byte-identical to the pre-seat shape). Only the
947
+ * literal `"bypass"` is a value: any other present value is refused at the door
948
+ * (`config.approver_posture_invalid`) rather than folded back to absence — a marshalled typo must not
949
+ * silently un-declare a posture the host meant to declare.
950
+ *
951
+ * **Inheritance / resume:** session-wide, exactly like {@link autoModeRequested} — an engine-spawned
952
+ * child inherits it through the trusted constraint chain (`InheritedGate.approverPosture`), and the
953
+ * resolved value is recorded on the checkpoint's data half so a redemption in another process still
954
+ * knows the posture without the seat being re-passed. Re-passing it is honoured; the sources fold
955
+ * seat-first.
956
+ */
957
+ approverPosture?: ApproverPosture;
927
958
  /** Task-scoped MCP servers, materialized into tools then disposed. */
928
959
  mcp?: McpServerSpec[];
929
960
  /** Task-scoped A2A peers (remote agents), whose advertised skills mount as `a2a__<peer>__<skill>`
@@ -123,9 +123,9 @@ export const TOOL_CATALOG_ENTRIES = [
123
123
  { id: "exit-plan-mode", name: "ExitPlanMode", source: "builtin", definedIn: "src/core/present-plan-tool.ts", mountedBy: ["optional"], cards: ["exit-plan-mode"], face: { family: "plan", effect: "read", contract: c("core.exit_plan_mode@1"), renderHints: { userFacingName: "", approvalCard: "plan" } } },
124
124
  { id: "enter-plan-mode", name: "EnterPlanMode", source: "builtin", definedIn: "src/core/present-plan-tool.ts", mountedBy: ["optional"], cards: ["enter-plan-mode"], face: { family: "plan", effect: "read", contract: c("core.enter_plan_mode@1") } },
125
125
  { id: "refresh-mcp-tools", name: REFRESH_MCP_TOOLS_TOOL_NAME, source: "builtin", definedIn: "src/core/runner/prepare-protocol-tools.ts", mountedBy: ["optional"], cards: [], face: { family: "protocol", effect: "read" } },
126
- { id: "memory-search", name: "memory_search", source: "builtin", definedIn: "src/core/memory-engine/tools.ts", mountedBy: ["memory"], cards: [], face: { family: "memory", effect: "read", contentOrigin: "local", contract: c("core.memory_search@1", "6"), offload: false } },
127
- { id: "memory-get", name: "memory_get", source: "builtin", definedIn: "src/core/memory-engine/tools.ts", mountedBy: ["memory"], cards: [], face: { family: "memory", effect: "read", contentOrigin: "local", contract: c("core.memory_get@1", "6"), offload: false } },
128
- { id: "memory-index", name: "memory_index", source: "builtin", definedIn: "src/core/memory-engine/tools.ts", mountedBy: ["memory"], cards: [], face: { family: "memory", effect: "read", contentOrigin: "local", contract: c("core.memory_index@1"), offload: false } },
126
+ { id: "memory-search", name: "memory_search", source: "builtin", definedIn: "src/core/memory-engine/tools.ts", mountedBy: ["memory"], cards: [], face: { family: "memory", effect: "read", contentOrigin: "local", contract: c("core.memory_search@1", "7"), offload: false } },
127
+ { id: "memory-get", name: "memory_get", source: "builtin", definedIn: "src/core/memory-engine/tools.ts", mountedBy: ["memory"], cards: [], face: { family: "memory", effect: "read", contentOrigin: "local", contract: c("core.memory_get@1", "7"), offload: false } },
128
+ { id: "memory-index", name: "memory_index", source: "builtin", definedIn: "src/core/memory-engine/tools.ts", mountedBy: ["memory"], cards: [], face: { family: "memory", effect: "read", contentOrigin: "local", contract: c("core.memory_index@1", "2"), offload: false } },
129
129
  { id: "memory-list", name: "memory_list", source: "builtin", definedIn: "src/core/shared-memory/tools.ts", mountedBy: ["memory"], cards: [], face: { family: "memory", effect: "read", contract: c("core.memory_list@1"), offload: false } },
130
130
  { id: "memory-read", name: "memory_read", source: "builtin", definedIn: "src/core/shared-memory/tools.ts", mountedBy: ["memory"], cards: [], face: { family: "memory", effect: "read", contract: c("core.memory_read@1"), offload: false } },
131
131
  { id: "cron-create", name: "CronCreate", source: "builtin", definedIn: "src/tools/scheduler-tools.ts", mountedBy: ["scheduler"], cards: ["cron-create"], face: { family: "other", effect: "write", contract: c("core.cron_create@1") } },
@@ -321,6 +321,13 @@ export type PermissionResult = {
321
321
  * in the one direction the stamp cannot reach (a caller composing its own ask) the claim is
322
322
  * tightening-only: it can make an ask outlive a rule, never turn one into an allow. */
323
323
  probeMandated?: true;
324
+ /** This ask is MANDATED — no persisted allow rule and no standing posture may retire it, only an
325
+ * answer to THIS call. ENGINE-STAMPED at the gate's single origin stamp from the ONE derivation
326
+ * the approval card's rule-offer word also reads ({@link import("./ask-origin.js").ruleClearanceOf},
327
+ * which lists the doors). TIGHTENING-ONLY: a layer below the mint may not clear one a layer above
328
+ * set, and a policy self-declaring it only opts its own ask OUT of automatic answering. Carried
329
+ * onto the approval request as {@link AskRequest.mandated}. */
330
+ mandated?: true;
324
331
  /** The probe named a directory that would clear this ask
325
332
  * ({@link import("./types.js").ReversibilityVerdict.readRootCandidate}). Display metadata like the two
326
333
  * `probe*` above; ENGINE-STAMPED and VALIDATED at the tighten, and deliberately NOT merged onto an ask
@@ -1230,6 +1237,37 @@ export interface AskRequest {
1230
1237
  * clear this ask (see that field's doc). `readonly`, filled by the gate from the decision, never a
1231
1238
  * caller/worker-settable field. */
1232
1239
  readonly requiresRealApproval?: boolean;
1240
+ /**
1241
+ * PRESENCE ONLY, and a FACT ABOUT THIS ASK: no persisted allow rule and no standing posture can
1242
+ * retire this question. ABSENT is not the inverse claim: a person's own explicit `ask` rule and a
1243
+ * matching allow rule the lane already refused both leave it absent and still block rule clearance
1244
+ * ({@link ruleOffersAbsence} words those `shadowed`). The wire twin of the
1245
+ * {@link PermissionResult} ask-arm member of the same name, minted once by the engine at the gate's
1246
+ * origin stamp and copied here by the four mint stations. The DOORS are enumerated once, at
1247
+ * {@link import("./ask-origin.js").ruleClearanceOf}: the tool seat's own egress / irreversibility
1248
+ * marks, an operator's per-call shell doctrine, the read station's structural demotion or a probe
1249
+ * that could not answer, a write the protection judge matched or could not resolve, governance
1250
+ * ({@link requiresRealApproval}), a hook's screening authority, and an ask an ANCESTOR's approver
1251
+ * decides. Not a door: a person's own explicit `ask` rule, which {@link ruleOffersAbsence} words
1252
+ * `shadowed` — a rule they wrote is speaking, and a posture answering it crosses no mandate.
1253
+ *
1254
+ * WHY a surface must read THIS member and not its neighbour. {@link ruleOffersAbsence} answers what
1255
+ * the RULE-OFFER LANE has to give, and that lane is structurally silent for any tool it does not
1256
+ * speak for, any deployment that wired no rule store and any task that cannot hold a rule — its
1257
+ * absence is not a claim (its own doc says so). Reading it as "not mandated" made two read faces of
1258
+ * one command disagree: the same out-of-root read asked as a mandated question on the shell tool and
1259
+ * as an apparently ordinary one on the monitor tool. This member is a property of the QUESTION,
1260
+ * present on every ask that carries one, whatever lane is wired.
1261
+ *
1262
+ * WHAT IT DOES NOT SAY: that no answerer may answer. An approver — a person, a hook, a deployment's
1263
+ * blanket `onAsk: "allow"` seat — resolves a mandated ask normally; {@link requiresRealApproval} is
1264
+ * the stronger, separate demand and is the one the engine's blanket seat refuses. A surface whose
1265
+ * POSTURE seat declines to auto-answer mandated cards reads this member to know which they are.
1266
+ * ABSENT is not the opposite claim on an older engine: a consumer that must tell "this engine mints
1267
+ * no such member" from "this ask is ordinary" reads the engine version, not this seat. Filled by the
1268
+ * gate, never caller/worker-settable; tightening-only.
1269
+ */
1270
+ readonly mandated?: true;
1233
1271
  /** Present ⇔ this ask is the classifier DENIAL-LIMIT fallback (see the
1234
1272
  * {@link PermissionResult} ask-arm member of the same name): the counts that tripped the bound and
1235
1273
  * this ask's own auto-deny window. Two readers: a card renders it as a countdown; {@link resolveAsk}
@@ -459,6 +459,7 @@ export function combinePolicies(...policies) {
459
459
  let anyRecord = false;
460
460
  let ruleAskText;
461
461
  let probeMandateSeen = false;
462
+ let mandateSeen = false;
462
463
  let fallbackSeen;
463
464
  for (const p of policies) {
464
465
  const d = refuseOutOfContractDecision(await p.check(current, signal));
@@ -490,6 +491,8 @@ export function combinePolicies(...policies) {
490
491
  }
491
492
  if (d.action === "ask" && d.probeMandated === true)
492
493
  probeMandateSeen = true;
494
+ if (d.action === "ask" && d.mandated === true)
495
+ mandateSeen = true;
493
496
  if (d.action === "ask" && d.denialLimitFallback !== undefined && fallbackSeen === undefined)
494
497
  fallbackSeen = d.denialLimitFallback;
495
498
  }
@@ -497,7 +500,8 @@ export function combinePolicies(...policies) {
497
500
  const merged = rewrite?.updatedInput;
498
501
  const withRuleAsk = ruleAskText !== undefined && asked.matchedAskRule === undefined ? { ...asked, matchedAskRule: ruleAskText } : asked;
499
502
  const withMark = probeMandateSeen && withRuleAsk.probeMandated !== true ? { ...withRuleAsk, probeMandated: true } : withRuleAsk;
500
- const withFallback = fallbackSeen !== undefined && withMark.denialLimitFallback === undefined ? { ...withMark, denialLimitFallback: fallbackSeen, requiresRealApproval: true } : withMark;
503
+ const withMandate = mandateSeen && withMark.mandated !== true ? { ...withMark, mandated: true } : withMark;
504
+ const withFallback = fallbackSeen !== undefined && withMandate.denialLimitFallback === undefined ? { ...withMandate, denialLimitFallback: fallbackSeen, requiresRealApproval: true } : withMandate;
501
505
  return merged !== undefined ? { ...withFallback, updatedInput: merged } : withFallback;
502
506
  }
503
507
  const allowed = rewrite ?? ALLOW;
@@ -13,7 +13,7 @@ import type { AgentTool, ThinkingLevel, ToolInputValidationContext, ToolInputVer
13
13
  import type { Model, StreamFn } from "../internal/llm.js";
14
14
  export type { ModelRef, ModelRole, RoleSpec, ModelRoles, Brain } from "./model-seat.js";
15
15
  export { MODEL_ROLES } from "./model-seat.js";
16
- export type { StaleToolResultOffloadOptions, ImageInput, TaskSpec, ShellGateDoctrine } from "./task-spec.js";
16
+ export type { StaleToolResultOffloadOptions, ImageInput, TaskSpec, ShellGateDoctrine, ApproverPosture } from "./task-spec.js";
17
17
  export type { ToolEffect, ToolContentOrigin, ReversibilityVerdict, ReadRootGrantCandidate, ToolSpec, ToolReturn, NestedUsage, NestedUsageAccum, ToolExecuteContext } from "./tool-spec.js";
18
18
  export type { BeforeWriteRequest, BeforeWriteResult, BeforeWriteHook, TrackEditRequest, TrackEditResult, TrackFileEditHook, FileEditedNotice, FileEditedHook, HandsBandOptions } from "./hands-band.js";
19
19
  export type { AgentDefinition, SkillManifest, SkillSpec } from "./agent-definition.js";
package/dist/index.d.ts CHANGED
@@ -58,6 +58,7 @@ export { decideAutoPromote, deriveTripwire, FROZEN_DENYLIST_FLOOR, type AutoProm
58
58
  export { runCascade, type CascadeRung, type CascadeConfig, type CascadeAttempt, type CascadeRunResult, type GateVerdict, } from "./agents/cascade.js";
59
59
  export { pgQuery, mysqlQuery, sqliteQuery } from "./tools/sql-adapters.js";
60
60
  export { materializeMcpTools, MCP_PREFIX, type MaterializedMcp, type McpServerStatus, type McpRefreshResult, type McpReconnectResult } from "./core/mcp.js";
61
+ export { probeMcpServers, type McpProbeResult } from "./core/mcp-probe.js";
61
62
  export { MCP_FAILURE_KINDS, MCP_DELIVERY_VERDICTS, MCP_LIVENESS_STATES, classifyMcpFailure, type McpFailure, type McpFailureKind, type McpDelivered, type McpLivenessState, type McpServerLiveness } from "./core/mcp-failure.js";
62
63
  export { MCP_INJECTION_DROP_REASONS, MCP_INJECTION_DROP_TEXT, mcpInjectionDroppedNotice, type McpInjectionDropReason, type McpInjectionDropFacts } from "./core/mcp-injection-drop.js";
63
64
  export { askUnresolvableNotice, type AskUnresolvableFacts } from "./core/ask-unresolvable-notice.js";
@@ -220,7 +221,7 @@ export { adoptLocalDataRoot, ackAdoptionConfig, witnessAdoptionConfig, listAdopt
220
221
  export { formatHookFeedback, runToolGate, createHookEnvCapabilities, createPreToolUseConstraintPolicy, type PersistedRuleHit, type PersistedRuleHitRule, type PersistedRuleUnreadable, type PersistedRuleCoverage, 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, } from "./core/hooks.js";
221
222
  export { HOOK_FAMILIES, HOOKS_INVALID_CODE, type HookFamily, type WiringManifestHookEntry } from "./core/hook-seats.js";
222
223
  export { InMemoryMemoryStore, composeMemoryBlock, composeLayeredMemoryBlock, normalizeMemorySpec, type NormalizedMemorySpec, type MemorySpecInput, supportsConsolidation, supportsPeriodicConsolidation, firstSentence, expandLexicalTerms, lexicalSearchMatch, type Embedder, classifyPromotable, enforcePromotableWriteGate, guardedMemoryStore, MemoryGateError, MemoryProjectionError, detectSecret, enforceSecretWriteGate, enforceStructuredNoteSecretGate, type UtilityGate, type MemoryStore, type MemoryVectorMode, type ScoredMemory, type MemoryNoteHeader, type MemoryNoteRecord, type MemoryNoteType, type StructuredNoteInput, } from "./core/memory.js";
223
- export { MemoryEngine, FileMemoryEngineBackend, memoryBackendContract, assertMemoryBackendSearchEquivalence, type MemoryBackendContractHooks, buildMemoryInstruction, writableRootOf, truncateIndex, scanEntryFiles, deriveRepoKey, deriveRepoMemoryDir, deriveControlPlaneDir, deriveRepoControlPlaneDir, resolveMemoryEngineRoot, scopeDirName, ControlPlaneCorruptError, parseEntryFile, serializeEntryFile, computeEntryRev, entryFromFile, MEMORY_ORIGIN_CAUSES, committedOriginOf, originEquals, consolidationExposedFrontmatter, ambiguousOriginRepresentation, type OriginClearanceRow, type OriginClearanceEvent, type OriginClearanceShadow, committedDistilledOf, distilledEquals, type MemoryEntryDistilled, type MemoryEntryDistilledInput, CONSOLIDATION_DEFAULTS, ConsolidationRefusedError, MEMORY_SEARCH_SUPERSEDED_TAG, consolidationTypeEligible, deriveSupersededSet, memorySupersededNote, readIntentCredentials, supersessionFuseCeiling, memoryConsolidationRecommendedNotice, memoryConsolidationCommittedNotice, memoryConsolidationConflictNotice, memoryConsolidationIncompleteNotice, memoryConsolidationRefusedNotice, memoryConsolidationWithheldNotice, type ConsolidationGateRead, type ConsolidationGateRow, type ConsolidationIntent, type ConsolidationIntentCredentialRow, type ConsolidationLeaseSeat, type ConsolidationProductProposal, type ConsolidationProposal, type MemoryConsolidationOptions, type ConsolidationCommitReceipt, type ConsolidationReconcileReport, type ConsolidationResolveReceipt, type ConsolidationPlanSummary, type ConsolidationPlanFoldEvidence, type SessionMemoryStatus, DISTILLER_DEFAULT_MAX_INPUTS_PER_PRODUCT, LLM_DISTILLER_CONTRACT, LLM_DISTILLER_CONTRACT_DL2, LLM_DISTILLER_CONTRACT_DL3, LLM_DISTILLER_CONTRACTS, MEMORY_DISTILLER_CONTRACT_V1, contractGroupingDiff, driveConsolidationToFixpoint, isAliasModelId, llmPlanDistiller, mintExposurePartitionedPlan, mintLlmConsolidationPlan, MEMORY_DISTILLER_PURITY_CONTRACT_V1, detectCleanArmVerbatimLeak, type CleanArmLeakFinding, type CleanArmLeakVerdict, type MemoryDistillerPurityContract, openAiCompatChatSeat, parseJsonAnswer, planParseRepairs, sanitizeLlmGroups, scheduleUnderFuse, type ConsolidationDistillFn, type ConsolidationDriveCycleRow, type ConsolidationDriveEngine, type ConsolidationDriveResult, type ConsolidationFoldState, type DistillerCandidate, type DistillerChatAnswer, type DistillerChatFn, type DistillerChatRequest, type FuseSchedule, type LlmConsolidationPlan, type LlmConsolidationPlanArm, type LlmConsolidationPlanProduct, type LlmDistillerContract, type MintLlmConsolidationPlanResult, type PlanParseRepairs, type SanitizedLlmGroups, CONSOLIDATION_DRIVER_PLANS_DIR, CONSOLIDATION_DRIVER_RUNS_FILE, CONSOLIDATION_RUN_STOP_REASONS, archiveDistillerPlan, readConsolidationDriverRun, runMemoryConsolidationDriver, type ConsolidationDriverEngine, type ConsolidationDriverRunRow, type ConsolidationRunReceipt, type ConsolidationRunStopReason, type RunMemoryConsolidationOptions, isInstructionEntry, type MemoryEntryOrigin, type MemoryOriginCause, MEMORY_INSTRUCTION_TEMPLATE, MEMORY_RECALL_DISCIPLINE, MEMORY_PREFERENCE_DISCIPLINE, MEMORY_READONLY_NOTICE, MEMORY_CAPTURE_OPTOUT_NOTICE, memoryCaptureOptedOutNotice, memoryCaptureOptOutUnpersistedNotice, SESSION_CAPTURE_OPTOUT_DIR, markSessionCaptureOptOut, readSessionCaptureOptOut, listSessionCaptureOptOut, fileSessionCaptureRecordStore, type SessionCaptureOptOutRecord, type SessionCaptureOptOutMarkOutcome, type SessionCaptureRecordStore, 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_INDEX_TOOL_NAME, MEMORY_ENGINE_TOOL_NAMES, type MemorySearchDetails, type MemorySearchHit, type CleanMemorySearchHit, type ExposedMemorySearchHit, MEMORY_EXPOSURE_BANNER, MEMORY_EXPOSURE_HANDLE_TAG, memoryExposureIndexRow, type MemoryGetDetails, type MemoryIndexDetails, type MemoryIndexRow, type CleanMemoryIndexRow, type ExposedMemoryIndexRow, 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 MemoryScopeEnumeration, 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";
224
+ export { MemoryEngine, FileMemoryEngineBackend, memoryBackendContract, assertMemoryBackendSearchEquivalence, type MemoryBackendContractHooks, buildMemoryInstruction, writableRootOf, truncateIndex, scanEntryFiles, deriveRepoKey, deriveRepoMemoryDir, deriveControlPlaneDir, deriveRepoControlPlaneDir, resolveMemoryEngineRoot, scopeDirName, ControlPlaneCorruptError, parseEntryFile, serializeEntryFile, computeEntryRev, entryFromFile, MEMORY_ORIGIN_CAUSES, committedOriginOf, originEquals, consolidationExposedFrontmatter, ambiguousOriginRepresentation, type OriginClearanceRow, type OriginClearanceEvent, type OriginClearanceShadow, committedDistilledOf, distilledEquals, type MemoryEntryDistilled, type MemoryEntryDistilledInput, CONSOLIDATION_DEFAULTS, ConsolidationRefusedError, MEMORY_SEARCH_SUPERSEDED_TAG, consolidationTypeEligible, deriveSupersededSet, memorySupersededNote, readIntentCredentials, supersessionFuseCeiling, deriveShadowedSet, memoryConsolidationRecommendedNotice, memoryConsolidationCommittedNotice, memoryConsolidationConflictNotice, memoryConsolidationIncompleteNotice, memoryConsolidationRefusedNotice, memoryConsolidationWithheldNotice, type ConsolidationGateRead, type ConsolidationGateRow, type ConsolidationIntent, type ConsolidationIntentCredentialRow, type ConsolidationLeaseSeat, type ConsolidationProductProposal, type ConsolidationProposal, type MemoryConsolidationOptions, type ConsolidationCommitReceipt, type ConsolidationReconcileReport, type ConsolidationResolveReceipt, type ConsolidationPlanSummary, type ConsolidationPlanFoldEvidence, type SessionMemoryStatus, DISTILLER_DEFAULT_MAX_INPUTS_PER_PRODUCT, LLM_DISTILLER_CONTRACT, LLM_DISTILLER_CONTRACT_DL2, LLM_DISTILLER_CONTRACT_DL3, LLM_DISTILLER_CONTRACTS, MEMORY_DISTILLER_CONTRACT_V1, contractGroupingDiff, driveConsolidationToFixpoint, isAliasModelId, llmPlanDistiller, mintExposurePartitionedPlan, mintLlmConsolidationPlan, MEMORY_DISTILLER_PURITY_CONTRACT_V1, detectCleanArmVerbatimLeak, type CleanArmLeakFinding, type CleanArmLeakVerdict, type MemoryDistillerPurityContract, openAiCompatChatSeat, parseJsonAnswer, planParseRepairs, sanitizeLlmGroups, scheduleUnderFuse, type ConsolidationDistillFn, type ConsolidationDriveCycleRow, type ConsolidationDriveEngine, type ConsolidationDriveResult, type ConsolidationFoldState, type DistillerCandidate, type DistillerChatAnswer, type DistillerChatFn, type DistillerChatRequest, type FuseSchedule, type LlmConsolidationPlan, type LlmConsolidationPlanArm, type LlmConsolidationPlanProduct, type LlmDistillerContract, type MintLlmConsolidationPlanResult, type PlanParseRepairs, type SanitizedLlmGroups, CONSOLIDATION_DRIVER_PLANS_DIR, CONSOLIDATION_DRIVER_RUNS_FILE, CONSOLIDATION_RUN_STOP_REASONS, archiveDistillerPlan, readConsolidationDriverRun, runMemoryConsolidationDriver, type ConsolidationDriverEngine, type ConsolidationDriverRunRow, type ConsolidationRunReceipt, type ConsolidationRunStopReason, type RunMemoryConsolidationOptions, isInstructionEntry, type MemoryEntryOrigin, type MemoryOriginCause, MEMORY_INSTRUCTION_TEMPLATE, MEMORY_RECALL_DISCIPLINE, MEMORY_PREFERENCE_DISCIPLINE, MEMORY_READONLY_NOTICE, MEMORY_CAPTURE_OPTOUT_NOTICE, memoryCaptureOptedOutNotice, memoryCaptureOptOutUnpersistedNotice, SESSION_CAPTURE_OPTOUT_DIR, markSessionCaptureOptOut, readSessionCaptureOptOut, listSessionCaptureOptOut, fileSessionCaptureRecordStore, type SessionCaptureOptOutRecord, type SessionCaptureOptOutMarkOutcome, type SessionCaptureRecordStore, 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_INDEX_TOOL_NAME, MEMORY_ENGINE_TOOL_NAMES, type MemorySearchDetails, type MemorySearchHit, type CleanMemorySearchHit, type ExposedMemorySearchHit, MEMORY_EXPOSURE_BANNER, MEMORY_EXPOSURE_HANDLE_TAG, memoryExposureIndexRow, type MemoryGetDetails, type MemoryIndexDetails, type MemoryIndexRow, type CleanMemoryIndexRow, type ExposedMemoryIndexRow, 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 MemoryScopeEnumeration, 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";
224
225
  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";
225
226
  export { sharedMemoryStoreContract, type SharedMemoryFixture, type SharedMemoryStoreContractHooks, } from "./core/shared-memory/contract.js";
226
227
  export { termSet, jaccardDistance, cosineDistance } from "./core/memory-vector.js";
@@ -277,12 +278,16 @@ export { toolResultStoreContract } from "./core/store-contracts/tool-result-stor
277
278
  export { fileHistoryStoreContract } from "./core/store-contracts/file-history-store-contract.js";
278
279
  export { workflowJournalStoreContract } from "./core/store-contracts/workflow-journal-store-contract.js";
279
280
  export { permissionRuleSyncContract, type PermissionRuleSyncContractHooks } from "./core/store-contracts/permission-rule-sync-contract.js";
281
+ export { permissionRuleWriteContract, type PermissionRuleWriteContractHooks } from "./core/store-contracts/permission-rule-write-contract.js";
280
282
  export { MAILBOX_CONTRACT_SCOPE, mailboxStoreContract, mailboxAckOwnershipContract, mailboxBundledOnlyContract, mailboxTombstonedRecipientContract, type MailboxTombstonedRecipientContractHooks, mailboxCrossProcessContract, type MailboxCrossProcessContractHooks, } from "./core/store-contracts/mailbox-store-contract.js";
281
283
  export { BACKGROUND_AGENT_CONTRACT_SCOPE, backgroundAgentStoreContract, backgroundAgentStoreScopesContract, } from "./core/store-contracts/background-agent-store-contract.js";
282
284
  export { PEER_DIRECTORY_CONTRACT_SCOPE, peerDirectoryContract, type PeerDirectoryContractHooks } from "./core/store-contracts/peer-directory-contract.js";
283
285
  export { type BackgroundAgentStore, type BackgroundAgentRecord, type BackgroundAgentRowSummary, type BackgroundAgentUsage, canAccessAgentRecord, STALE_RUNNING_REAP_ATTRIBUTION, BackgroundAgentStoreError, InMemoryBackgroundAgentStore, reconcileParkedAgents, queryBackgroundAgents, type BackgroundAgentQuery, } from "./core/background-agent-store.js";
284
286
  export { serveDurableAgentRowLane, buildAgentPollDetails, type AgentPollDetailsInput, } from "./core/task-registry-agent.js";
285
287
  export type { UnifiedTaskResult } from "./core/task-registry-shared.js";
288
+ export { TASK_OUTPUT_REPLAY_KINDS, type TaskOutputReplay } from "./core/task-registry-shared.js";
289
+ export { REMOVAL_LIVENESS_WORDS, type RemovalLiveness, RULE_WRITE_COMMITTED_WORDS, type RuleWriteCommitted } from "./core/permission-rule-store.js";
290
+ export { normalizeReadRootCandidate, READ_ROOT_CANDIDATE_DIR_MAX } from "./core/read-root-candidate.js";
286
291
  export { FileBackgroundAgentStore, type FileBackgroundAgentStoreOptions } from "./stores/file/background-agent-store.js";
287
292
  export { A2A_TASK_STATES, type A2ATaskState, type A2ATaskStateReversal, type A2ATaskStateReversalFaithful, type A2ATaskStateReversalLossy, toA2ATaskState, fromA2ATaskState, } from "./core/a2a-task-state.js";
288
293
  export { type WorkflowJournalStore, type WorkflowJournalEntry, InMemoryWorkflowJournalStore, callKeyOrdinal, JOURNAL_OVERSIZE_ERROR_CODE, WorkflowJournalOversizeError, assertJournalEntryFits, } from "./core/workflow-journal-store.js";
@@ -334,7 +339,7 @@ export { ROUTE_ADJUDICATION_CONFORMANCE_CORPUS, type RouteAdjudicationVector } f
334
339
  export { type BrainTimeoutConfig } from "./brain/timeout.js";
335
340
  export { createAssistantMessageEventStream } from "./internal/llm.js";
336
341
  export type { AssistantMessage, AssistantMessageEvent, CompleteSimpleFn, Context, DocumentContent, ImageContent, Message, StopReason, StreamFn, TextContent, ThinkingContent, ToolCall, ToolResultMessage, Usage, UserMessage, } from "./internal/llm.js";
337
- export type { AgentDefinition, BeforeWriteHook, BeforeWriteRequest, BeforeWriteResult, TrackFileEditHook, TrackEditRequest, TrackEditResult, FileEditedHook, FileEditedNotice, HandsBandOptions, Brain, BrainStatus, BrainStatusPhase, BrainRetryErrClass, ImageInput, McpElicitRequest, McpElicitResponse, McpServerSpec, A2aServerSpec, OnElicit, Model, ModelRef, ProjectMemoryLoad, RunnerDeps, ResumePreflightInfo, ResumePreflightVerdict, EngineNotice, RuntimeCaps, BackgroundChildEvent, DelegationLifecycleEvent, SkillManifest, SkillSpec, TaskEvent, TaskEventIdentity, ToolActivity, TaskLimits, StaleToolResultOffloadOptions, TaskResult, TerminalCause, PausedCause, EffectiveMemoryScopes, RemoteEnvFailureNote, TaskSpec, ShellGateDoctrine, TaskStatus, TaskStream, CompactOutcome, ThinkingLevel, ToolExecuteContext, ToolReturn, ToolSpec, ToolInputVerdict, ToolInputValidationContext, ReversibilityVerdict, ReadRootGrantCandidate, ToolEffect, ToolContentOrigin, WorkflowGovernanceBaseline, DelegationTaskType, } from "./core/types.js";
342
+ export type { AgentDefinition, BeforeWriteHook, BeforeWriteRequest, BeforeWriteResult, TrackFileEditHook, TrackEditRequest, TrackEditResult, FileEditedHook, FileEditedNotice, HandsBandOptions, Brain, BrainStatus, BrainStatusPhase, BrainRetryErrClass, ImageInput, McpElicitRequest, McpElicitResponse, McpServerSpec, A2aServerSpec, OnElicit, Model, ModelRef, ProjectMemoryLoad, RunnerDeps, ResumePreflightInfo, ResumePreflightVerdict, EngineNotice, RuntimeCaps, BackgroundChildEvent, DelegationLifecycleEvent, SkillManifest, SkillSpec, TaskEvent, TaskEventIdentity, ToolActivity, TaskLimits, StaleToolResultOffloadOptions, TaskResult, TerminalCause, PausedCause, EffectiveMemoryScopes, RemoteEnvFailureNote, TaskSpec, ShellGateDoctrine, ApproverPosture, TaskStatus, TaskStream, CompactOutcome, ThinkingLevel, ToolExecuteContext, ToolReturn, ToolSpec, ToolInputVerdict, ToolInputValidationContext, ReversibilityVerdict, ReadRootGrantCandidate, ToolEffect, ToolContentOrigin, WorkflowGovernanceBaseline, DelegationTaskType, } from "./core/types.js";
338
343
  export { Type } from "typebox";
339
344
  export type { TSchema, Static } from "typebox";
340
345
  export { explainPromptAssembly, describeDefaultPack, type DefaultPackDescription, type ExplainInput } from "./prompt-assembly/explain.js";
package/dist/index.js CHANGED
@@ -44,6 +44,7 @@ export { decideAutoPromote, deriveTripwire, FROZEN_DENYLIST_FLOOR, } from "./cor
44
44
  export { runCascade, } from "./agents/cascade.js";
45
45
  export { pgQuery, mysqlQuery, sqliteQuery } from "./tools/sql-adapters.js";
46
46
  export { materializeMcpTools, MCP_PREFIX } from "./core/mcp.js";
47
+ export { probeMcpServers } from "./core/mcp-probe.js";
47
48
  export { MCP_FAILURE_KINDS, MCP_DELIVERY_VERDICTS, MCP_LIVENESS_STATES, classifyMcpFailure } from "./core/mcp-failure.js";
48
49
  export { MCP_INJECTION_DROP_REASONS, MCP_INJECTION_DROP_TEXT, mcpInjectionDroppedNotice } from "./core/mcp-injection-drop.js";
49
50
  export { askUnresolvableNotice } from "./core/ask-unresolvable-notice.js";
@@ -176,7 +177,7 @@ export { adoptLocalDataRoot, ackAdoptionConfig, witnessAdoptionConfig, listAdopt
176
177
  export { formatHookFeedback, runToolGate, createHookEnvCapabilities, createPreToolUseConstraintPolicy, normalizePersistedRuleHit, } from "./core/hooks.js";
177
178
  export { HOOK_FAMILIES, HOOKS_INVALID_CODE } from "./core/hook-seats.js";
178
179
  export { InMemoryMemoryStore, composeMemoryBlock, composeLayeredMemoryBlock, normalizeMemorySpec, supportsConsolidation, supportsPeriodicConsolidation, firstSentence, expandLexicalTerms, lexicalSearchMatch, classifyPromotable, enforcePromotableWriteGate, guardedMemoryStore, MemoryGateError, MemoryProjectionError, detectSecret, enforceSecretWriteGate, enforceStructuredNoteSecretGate, } from "./core/memory.js";
179
- export { MemoryEngine, FileMemoryEngineBackend, memoryBackendContract, assertMemoryBackendSearchEquivalence, buildMemoryInstruction, writableRootOf, truncateIndex, scanEntryFiles, deriveRepoKey, deriveRepoMemoryDir, deriveControlPlaneDir, deriveRepoControlPlaneDir, resolveMemoryEngineRoot, scopeDirName, ControlPlaneCorruptError, parseEntryFile, serializeEntryFile, computeEntryRev, entryFromFile, MEMORY_ORIGIN_CAUSES, committedOriginOf, originEquals, consolidationExposedFrontmatter, ambiguousOriginRepresentation, committedDistilledOf, distilledEquals, CONSOLIDATION_DEFAULTS, ConsolidationRefusedError, MEMORY_SEARCH_SUPERSEDED_TAG, consolidationTypeEligible, deriveSupersededSet, memorySupersededNote, readIntentCredentials, supersessionFuseCeiling, memoryConsolidationRecommendedNotice, memoryConsolidationCommittedNotice, memoryConsolidationConflictNotice, memoryConsolidationIncompleteNotice, memoryConsolidationRefusedNotice, memoryConsolidationWithheldNotice, DISTILLER_DEFAULT_MAX_INPUTS_PER_PRODUCT, LLM_DISTILLER_CONTRACT, LLM_DISTILLER_CONTRACT_DL2, LLM_DISTILLER_CONTRACT_DL3, LLM_DISTILLER_CONTRACTS, MEMORY_DISTILLER_CONTRACT_V1, contractGroupingDiff, driveConsolidationToFixpoint, isAliasModelId, llmPlanDistiller, mintExposurePartitionedPlan, mintLlmConsolidationPlan, MEMORY_DISTILLER_PURITY_CONTRACT_V1, detectCleanArmVerbatimLeak, openAiCompatChatSeat, parseJsonAnswer, planParseRepairs, sanitizeLlmGroups, scheduleUnderFuse, CONSOLIDATION_DRIVER_PLANS_DIR, CONSOLIDATION_DRIVER_RUNS_FILE, CONSOLIDATION_RUN_STOP_REASONS, archiveDistillerPlan, readConsolidationDriverRun, runMemoryConsolidationDriver, isInstructionEntry, MEMORY_INSTRUCTION_TEMPLATE, MEMORY_RECALL_DISCIPLINE, MEMORY_PREFERENCE_DISCIPLINE, MEMORY_READONLY_NOTICE, MEMORY_CAPTURE_OPTOUT_NOTICE, memoryCaptureOptedOutNotice, memoryCaptureOptOutUnpersistedNotice, SESSION_CAPTURE_OPTOUT_DIR, markSessionCaptureOptOut, readSessionCaptureOptOut, listSessionCaptureOptOut, fileSessionCaptureRecordStore, 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_INDEX_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";
180
+ export { MemoryEngine, FileMemoryEngineBackend, memoryBackendContract, assertMemoryBackendSearchEquivalence, buildMemoryInstruction, writableRootOf, truncateIndex, scanEntryFiles, deriveRepoKey, deriveRepoMemoryDir, deriveControlPlaneDir, deriveRepoControlPlaneDir, resolveMemoryEngineRoot, scopeDirName, ControlPlaneCorruptError, parseEntryFile, serializeEntryFile, computeEntryRev, entryFromFile, MEMORY_ORIGIN_CAUSES, committedOriginOf, originEquals, consolidationExposedFrontmatter, ambiguousOriginRepresentation, committedDistilledOf, distilledEquals, CONSOLIDATION_DEFAULTS, ConsolidationRefusedError, MEMORY_SEARCH_SUPERSEDED_TAG, consolidationTypeEligible, deriveSupersededSet, memorySupersededNote, readIntentCredentials, supersessionFuseCeiling, deriveShadowedSet, memoryConsolidationRecommendedNotice, memoryConsolidationCommittedNotice, memoryConsolidationConflictNotice, memoryConsolidationIncompleteNotice, memoryConsolidationRefusedNotice, memoryConsolidationWithheldNotice, DISTILLER_DEFAULT_MAX_INPUTS_PER_PRODUCT, LLM_DISTILLER_CONTRACT, LLM_DISTILLER_CONTRACT_DL2, LLM_DISTILLER_CONTRACT_DL3, LLM_DISTILLER_CONTRACTS, MEMORY_DISTILLER_CONTRACT_V1, contractGroupingDiff, driveConsolidationToFixpoint, isAliasModelId, llmPlanDistiller, mintExposurePartitionedPlan, mintLlmConsolidationPlan, MEMORY_DISTILLER_PURITY_CONTRACT_V1, detectCleanArmVerbatimLeak, openAiCompatChatSeat, parseJsonAnswer, planParseRepairs, sanitizeLlmGroups, scheduleUnderFuse, CONSOLIDATION_DRIVER_PLANS_DIR, CONSOLIDATION_DRIVER_RUNS_FILE, CONSOLIDATION_RUN_STOP_REASONS, archiveDistillerPlan, readConsolidationDriverRun, runMemoryConsolidationDriver, isInstructionEntry, MEMORY_INSTRUCTION_TEMPLATE, MEMORY_RECALL_DISCIPLINE, MEMORY_PREFERENCE_DISCIPLINE, MEMORY_READONLY_NOTICE, MEMORY_CAPTURE_OPTOUT_NOTICE, memoryCaptureOptedOutNotice, memoryCaptureOptOutUnpersistedNotice, SESSION_CAPTURE_OPTOUT_DIR, markSessionCaptureOptOut, readSessionCaptureOptOut, listSessionCaptureOptOut, fileSessionCaptureRecordStore, 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_INDEX_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";
180
181
  export { SHARED_MEMORY_READ_CAP_BYTES, SHARED_MEMORY_LIST_PAGE_SIZE, SharedMemoryStoreError, } from "./core/shared-memory/types.js";
181
182
  export { sharedMemoryStoreContract, } from "./core/shared-memory/contract.js";
182
183
  export { termSet, jaccardDistance, cosineDistance } from "./core/memory-vector.js";
@@ -231,11 +232,15 @@ export { toolResultStoreContract } from "./core/store-contracts/tool-result-stor
231
232
  export { fileHistoryStoreContract } from "./core/store-contracts/file-history-store-contract.js";
232
233
  export { workflowJournalStoreContract } from "./core/store-contracts/workflow-journal-store-contract.js";
233
234
  export { permissionRuleSyncContract } from "./core/store-contracts/permission-rule-sync-contract.js";
235
+ export { permissionRuleWriteContract } from "./core/store-contracts/permission-rule-write-contract.js";
234
236
  export { MAILBOX_CONTRACT_SCOPE, mailboxStoreContract, mailboxAckOwnershipContract, mailboxBundledOnlyContract, mailboxTombstonedRecipientContract, mailboxCrossProcessContract, } from "./core/store-contracts/mailbox-store-contract.js";
235
237
  export { BACKGROUND_AGENT_CONTRACT_SCOPE, backgroundAgentStoreContract, backgroundAgentStoreScopesContract, } from "./core/store-contracts/background-agent-store-contract.js";
236
238
  export { PEER_DIRECTORY_CONTRACT_SCOPE, peerDirectoryContract } from "./core/store-contracts/peer-directory-contract.js";
237
239
  export { canAccessAgentRecord, STALE_RUNNING_REAP_ATTRIBUTION, BackgroundAgentStoreError, InMemoryBackgroundAgentStore, reconcileParkedAgents, queryBackgroundAgents, } from "./core/background-agent-store.js";
238
240
  export { serveDurableAgentRowLane, buildAgentPollDetails, } from "./core/task-registry-agent.js";
241
+ export { TASK_OUTPUT_REPLAY_KINDS } from "./core/task-registry-shared.js";
242
+ export { REMOVAL_LIVENESS_WORDS, RULE_WRITE_COMMITTED_WORDS } from "./core/permission-rule-store.js";
243
+ export { normalizeReadRootCandidate, READ_ROOT_CANDIDATE_DIR_MAX } from "./core/read-root-candidate.js";
239
244
  export { FileBackgroundAgentStore } from "./stores/file/background-agent-store.js";
240
245
  export { A2A_TASK_STATES, toA2ATaskState, fromA2ATaskState, } from "./core/a2a-task-state.js";
241
246
  export { InMemoryWorkflowJournalStore, callKeyOrdinal, JOURNAL_OVERSIZE_ERROR_CODE, WorkflowJournalOversizeError, assertJournalEntryFits, } from "./core/workflow-journal-store.js";
@@ -2,7 +2,7 @@ import { closeSync, constants as FS, existsSync, fsyncSync, lstatSync, mkdirSync
2
2
  import { join } from "node:path";
3
3
  import { createHash, randomBytes } from "node:crypto";
4
4
  import { isRuleBehavior } from "../../core/permission-rule-model.js";
5
- import { PERMISSION_RULE_WRITER, applySyncJoin, applyTombstones, assertDeleteDeltaCarriesNoAdd, assertRedemptionNotQuarantined, assertWriteDeltaScopeDurable, foldDelta, } from "../../core/permission-rule-store.js";
5
+ import { PERMISSION_RULE_WRITER, applySyncJoin, applyTombstones, assertDeleteDeltaCarriesNoAdd, assertRedemptionNotQuarantined, assertWriteDeltaScopeDurable, foldDelta, unknownRuleWriteDeltaError, } from "../../core/permission-rule-store.js";
6
6
  import { canonicalize } from "../../core/canonical-json.js";
7
7
  import { BootLock } from "./fs-atomic.js";
8
8
  import { assertAdoptionBootGate } from "./adoption/marker.js";
@@ -284,36 +284,55 @@ class FileDurableRulePartition {
284
284
  const cur = this.current();
285
285
  if (cur.rev !== opts.expectedRev)
286
286
  return { conflict: true, rev: cur.rev };
287
- if (delta.kind === "sync-join") {
288
- const { next, report } = applySyncJoin({
289
- actor: cur.actor,
290
- counter: cur.counter,
291
- rules: cur.rules,
292
- tombstones: cur.tombstones,
293
- quarantined: cur.quarantined ?? [],
294
- ...(cur.sync?.observedVector !== undefined ? { observedVector: cur.sync.observedVector } : {}),
295
- }, delta, Date.now());
296
- const landed = {
297
- ...cur,
298
- rev: cur.rev + 1,
299
- rules: next.rules,
300
- tombstones: next.tombstones,
301
- sync: {
302
- ...(next.observedVector !== undefined ? { observedVector: next.observedVector } : {}),
303
- lastRoundAtMs: Date.now(),
304
- },
305
- ...(next.quarantined.length > 0 ? { quarantined: next.quarantined } : {}),
306
- };
307
- if (!this.writeAndVerify(landed)) {
308
- throw new Error("the permission-rule store did not survive its own write; the change was not committed");
287
+ let next;
288
+ switch (delta.kind) {
289
+ case "sync-join": {
290
+ const { next: joined, report } = applySyncJoin({
291
+ actor: cur.actor,
292
+ counter: cur.counter,
293
+ rules: cur.rules,
294
+ tombstones: cur.tombstones,
295
+ quarantined: cur.quarantined ?? [],
296
+ ...(cur.sync?.observedVector !== undefined ? { observedVector: cur.sync.observedVector } : {}),
297
+ }, delta, Date.now());
298
+ const landed = {
299
+ ...cur,
300
+ rev: cur.rev + 1,
301
+ rules: joined.rules,
302
+ tombstones: joined.tombstones,
303
+ sync: {
304
+ ...(joined.observedVector !== undefined ? { observedVector: joined.observedVector } : {}),
305
+ lastRoundAtMs: Date.now(),
306
+ },
307
+ ...(joined.quarantined.length > 0 ? { quarantined: joined.quarantined } : {}),
308
+ };
309
+ if (!this.writeAndVerify(landed)) {
310
+ throw new Error("the permission-rule store did not survive its own write; the change was not committed");
311
+ }
312
+ return { rev: cur.rev + 1, sync: report };
313
+ }
314
+ case "redemption-add": {
315
+ assertWriteDeltaScopeDurable(delta);
316
+ assertRedemptionNotQuarantined(cur.quarantined ?? [], delta);
317
+ next = { ...cur, rev: cur.rev + 1, rules: foldDelta(cur.rules, delta) };
318
+ break;
319
+ }
320
+ case "tighten-add": {
321
+ assertWriteDeltaScopeDurable(delta);
322
+ next = { ...cur, rev: cur.rev + 1, rules: foldDelta(cur.rules, delta) };
323
+ break;
324
+ }
325
+ case "tighten-delete": {
326
+ assertWriteDeltaScopeDurable(delta);
327
+ assertDeleteDeltaCarriesNoAdd(delta);
328
+ next = { ...cur, rev: cur.rev + 1, tombstones: [...cur.tombstones, delta.tombstone] };
329
+ break;
330
+ }
331
+ default: {
332
+ const unhandled = delta;
333
+ throw unknownRuleWriteDeltaError(unhandled);
309
334
  }
310
- return { rev: cur.rev + 1, sync: report };
311
335
  }
312
- const next = delta.kind === "redemption-add"
313
- ? (assertWriteDeltaScopeDurable(delta), assertRedemptionNotQuarantined(cur.quarantined ?? [], delta), { ...cur, rev: cur.rev + 1, rules: foldDelta(cur.rules, delta) })
314
- : delta.kind === "tighten-add"
315
- ? (assertWriteDeltaScopeDurable(delta), { ...cur, rev: cur.rev + 1, rules: foldDelta(cur.rules, delta) })
316
- : (assertWriteDeltaScopeDurable(delta), assertDeleteDeltaCarriesNoAdd(delta), { ...cur, rev: cur.rev + 1, tombstones: [...cur.tombstones, delta.tombstone] });
317
336
  if (!this.writeAndVerify(next)) {
318
337
  throw new Error("the permission-rule store did not survive its own write; the change was not committed");
319
338
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sema-agent/core",
3
- "version": "7.25.1",
3
+ "version": "7.26.0",
4
4
  "description": "Stateless, task-oriented AI agent core",
5
5
  "type": "module",
6
6
  "license": "BUSL-1.1",
@@ -1,7 +1,7 @@
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
3
  "_tierComment": "#435 v1 — machine-readable layering of the public surface: stable = demonstrated by README.md / src/examples; internal = an `Internal`-marked name or a runner/engine deep-subtree declaration (the model seam src/engine/llm is excluded — it is the BYOM contract, not an engine internal); advanced = a supported export the front door does not walk you through. THIS IS AN INITIAL HEURISTIC, derived mechanically and expected to be refined ticket by ticket: no human reviewed these 1700+ entries one by one, and nothing here claims otherwise. Known bias: a short or English-word export name (ok, err, Result, Usage) can match ordinary prose in README.md and land `stable` on a coincidence. Every export MUST carry a tier — a new export with no row fails the gate in export-surface.test.ts.",
4
- "count": 2410,
4
+ "count": 2424,
5
5
  "exports": {
6
6
  "A2ATaskState": "type",
7
7
  "A2ATaskStateReversal": "type",
@@ -84,6 +84,7 @@
84
84
  "AggregateBudgetOptions": "interface",
85
85
  "AnthropicBrainConfig": "interface",
86
86
  "AppendLog": "class",
87
+ "ApproverPosture": "type",
87
88
  "ArtifactAction": "type",
88
89
  "ArtifactCallContext": "interface",
89
90
  "ArtifactCommitCertainty": "type",
@@ -716,6 +717,7 @@
716
717
  "McpInjectionDropFacts": "interface",
717
718
  "McpInjectionDropReason": "type",
718
719
  "McpLivenessState": "type",
720
+ "McpProbeResult": "interface",
719
721
  "McpReconnectResult": "interface",
720
722
  "McpRefreshResult": "interface",
721
723
  "McpServerLiveness": "interface",
@@ -984,6 +986,7 @@
984
986
  "PermissionRuleSyncContractHooks": "interface",
985
987
  "PermissionRuleSyncResult": "interface",
986
988
  "PermissionRuleSyncTransport": "type",
989
+ "PermissionRuleWriteContractHooks": "interface",
987
990
  "PermissionRuleWriter": "interface",
988
991
  "PersistedOrgRuleState": "interface",
989
992
  "PersistedRule": "interface",
@@ -1059,6 +1062,7 @@
1059
1062
  "READ_ONLY_EXACT_FORMS": "variable",
1060
1063
  "READ_ONLY_FLAG_ARITIES": "variable",
1061
1064
  "READ_ONLY_GLOB_PROGRAMS": "variable",
1065
+ "READ_ROOT_CANDIDATE_DIR_MAX": "variable",
1062
1066
  "READ_RULE_TOOL": "variable",
1063
1067
  "REAL_APPROVAL_CHECKPOINT_VERSION": "variable",
1064
1068
  "REASONING_BUDGET_SHARE": "variable",
@@ -1066,6 +1070,7 @@
1066
1070
  "RECOMMENDED_SENSITIVE_PATTERNS": "variable",
1067
1071
  "REMOTE_HARVEST_PER_FILE_BYTES": "variable",
1068
1072
  "REMOTE_MASS_DELETION_FUSE_RATIO": "variable",
1073
+ "REMOVAL_LIVENESS_WORDS": "variable",
1069
1074
  "RENDER_HINT_ACTIVITY_MAX_CHARS": "variable",
1070
1075
  "RENDER_HINT_MAX_CHARS": "variable",
1071
1076
  "RENDER_HINT_MAX_LIST": "variable",
@@ -1085,6 +1090,7 @@
1085
1090
  "RULE_OFFERS_ABSENCE_BASELINE": "variable",
1086
1091
  "RULE_STORE_UNREADABLE_KINDS": "variable",
1087
1092
  "RULE_SYNC_DROP_CODES": "variable",
1093
+ "RULE_WRITE_COMMITTED_WORDS": "variable",
1088
1094
  "RUN_WORKFLOW_TOOL_NAME": "variable",
1089
1095
  "RawPrefixInputs": "interface",
1090
1096
  "RawRuleSyncState": "interface",
@@ -1122,6 +1128,7 @@
1122
1128
  "RemoteMaterialization": "interface",
1123
1129
  "RemoteMemoryBaseline": "interface",
1124
1130
  "RemoteMemoryFile": "interface",
1131
+ "RemovalLiveness": "type",
1125
1132
  "RemoveResult": "type",
1126
1133
  "RemovedPermissionRule": "interface",
1127
1134
  "ReopenReason": "type",
@@ -1211,6 +1218,7 @@
1211
1218
  "RuleTicket": "type",
1212
1219
  "RuleTightenAddDelta": "interface",
1213
1220
  "RuleTombstone": "interface",
1221
+ "RuleWriteCommitted": "type",
1214
1222
  "RuleWriteDelta": "type",
1215
1223
  "RuleWriteOutcome": "type",
1216
1224
  "RunInternals": "interface",
@@ -1388,6 +1396,7 @@
1388
1396
  "SystemInjection": "interface",
1389
1397
  "SystemInjectionPriority": "type",
1390
1398
  "SystemInjectionQueue": "class",
1399
+ "TASK_OUTPUT_REPLAY_KINDS": "variable",
1391
1400
  "TEACHER_PROFILE": "variable",
1392
1401
  "TEACHER_PROMPT": "variable",
1393
1402
  "TEAMMATE_COMMUNICATION_ADDENDUM": "variable",
@@ -1421,6 +1430,7 @@
1421
1430
  "TaskNotificationPayload": "interface",
1422
1431
  "TaskNotificationStatus": "type",
1423
1432
  "TaskOutcome": "interface",
1433
+ "TaskOutputReplay": "type",
1424
1434
  "TaskRegistry": "class",
1425
1435
  "TaskRequestBody": "interface",
1426
1436
  "TaskResult": "interface",
@@ -1862,6 +1872,7 @@
1862
1872
  "deriveRepoControlPlaneDir": "function",
1863
1873
  "deriveRepoKey": "function",
1864
1874
  "deriveRepoMemoryDir": "function",
1875
+ "deriveShadowedSet": "function",
1865
1876
  "deriveSupersededSet": "function",
1866
1877
  "deriveTripwire": "function",
1867
1878
  "deriveWiringManifest": "function",
@@ -2095,6 +2106,7 @@
2095
2106
  "normalizePersistedRuleHit": "function",
2096
2107
  "normalizePromptEpoch": "function",
2097
2108
  "normalizePublishedPath": "function",
2109
+ "normalizeReadRootCandidate": "function",
2098
2110
  "normalizeRules": "function",
2099
2111
  "normalizeToolResultProvenance": "function",
2100
2112
  "noticeAudienceOf": "function",
@@ -2151,6 +2163,7 @@
2151
2163
  "peerSendVerdictSeverity": "function",
2152
2164
  "peerSessionBoxHandle": "function",
2153
2165
  "permissionRuleSyncContract": "function",
2166
+ "permissionRuleWriteContract": "function",
2154
2167
  "pgQuery": "function",
2155
2168
  "physicalPathOf": "function",
2156
2169
  "physicalPathOfExisting": "function",
@@ -2160,6 +2173,7 @@
2160
2173
  "prepareCardApproval": "function",
2161
2174
  "prepareCcImport": "function",
2162
2175
  "prepareStarterBatch": "function",
2176
+ "probeMcpServers": "function",
2163
2177
  "probeParkRoundTrip": "function",
2164
2178
  "probeSearchBackend": "function",
2165
2179
  "processFingerprint": "function",
@@ -2496,6 +2510,7 @@
2496
2510
  "AggregateBudgetOptions": "advanced",
2497
2511
  "AnthropicBrainConfig": "advanced",
2498
2512
  "AppendLog": "advanced",
2513
+ "ApproverPosture": "advanced",
2499
2514
  "ArtifactAction": "advanced",
2500
2515
  "ArtifactCallContext": "advanced",
2501
2516
  "ArtifactCommitCertainty": "advanced",
@@ -3128,6 +3143,7 @@
3128
3143
  "McpInjectionDropFacts": "advanced",
3129
3144
  "McpInjectionDropReason": "advanced",
3130
3145
  "McpLivenessState": "advanced",
3146
+ "McpProbeResult": "advanced",
3131
3147
  "McpReconnectResult": "advanced",
3132
3148
  "McpRefreshResult": "advanced",
3133
3149
  "McpServerLiveness": "advanced",
@@ -3396,6 +3412,7 @@
3396
3412
  "PermissionRuleSyncContractHooks": "advanced",
3397
3413
  "PermissionRuleSyncResult": "advanced",
3398
3414
  "PermissionRuleSyncTransport": "advanced",
3415
+ "PermissionRuleWriteContractHooks": "advanced",
3399
3416
  "PermissionRuleWriter": "advanced",
3400
3417
  "PersistedOrgRuleState": "stable",
3401
3418
  "PersistedRule": "advanced",
@@ -3471,6 +3488,7 @@
3471
3488
  "READ_ONLY_EXACT_FORMS": "advanced",
3472
3489
  "READ_ONLY_FLAG_ARITIES": "advanced",
3473
3490
  "READ_ONLY_GLOB_PROGRAMS": "advanced",
3491
+ "READ_ROOT_CANDIDATE_DIR_MAX": "advanced",
3474
3492
  "READ_RULE_TOOL": "advanced",
3475
3493
  "REAL_APPROVAL_CHECKPOINT_VERSION": "advanced",
3476
3494
  "REASONING_BUDGET_SHARE": "advanced",
@@ -3478,6 +3496,7 @@
3478
3496
  "RECOMMENDED_SENSITIVE_PATTERNS": "advanced",
3479
3497
  "REMOTE_HARVEST_PER_FILE_BYTES": "advanced",
3480
3498
  "REMOTE_MASS_DELETION_FUSE_RATIO": "advanced",
3499
+ "REMOVAL_LIVENESS_WORDS": "advanced",
3481
3500
  "RENDER_HINT_ACTIVITY_MAX_CHARS": "advanced",
3482
3501
  "RENDER_HINT_MAX_CHARS": "advanced",
3483
3502
  "RENDER_HINT_MAX_LIST": "advanced",
@@ -3497,6 +3516,7 @@
3497
3516
  "RULE_OFFERS_ABSENCE_BASELINE": "advanced",
3498
3517
  "RULE_STORE_UNREADABLE_KINDS": "advanced",
3499
3518
  "RULE_SYNC_DROP_CODES": "advanced",
3519
+ "RULE_WRITE_COMMITTED_WORDS": "advanced",
3500
3520
  "RUN_WORKFLOW_TOOL_NAME": "stable",
3501
3521
  "RawPrefixInputs": "advanced",
3502
3522
  "RawRuleSyncState": "advanced",
@@ -3534,6 +3554,7 @@
3534
3554
  "RemoteMaterialization": "advanced",
3535
3555
  "RemoteMemoryBaseline": "advanced",
3536
3556
  "RemoteMemoryFile": "advanced",
3557
+ "RemovalLiveness": "advanced",
3537
3558
  "RemoveResult": "advanced",
3538
3559
  "RemovedPermissionRule": "advanced",
3539
3560
  "ReopenReason": "stable",
@@ -3623,6 +3644,7 @@
3623
3644
  "RuleTicket": "advanced",
3624
3645
  "RuleTightenAddDelta": "advanced",
3625
3646
  "RuleTombstone": "advanced",
3647
+ "RuleWriteCommitted": "advanced",
3626
3648
  "RuleWriteDelta": "advanced",
3627
3649
  "RuleWriteOutcome": "advanced",
3628
3650
  "RunInternals": "internal",
@@ -3800,6 +3822,7 @@
3800
3822
  "SystemInjection": "advanced",
3801
3823
  "SystemInjectionPriority": "advanced",
3802
3824
  "SystemInjectionQueue": "advanced",
3825
+ "TASK_OUTPUT_REPLAY_KINDS": "advanced",
3803
3826
  "TEACHER_PROFILE": "advanced",
3804
3827
  "TEACHER_PROMPT": "advanced",
3805
3828
  "TEAMMATE_COMMUNICATION_ADDENDUM": "advanced",
@@ -3833,6 +3856,7 @@
3833
3856
  "TaskNotificationPayload": "advanced",
3834
3857
  "TaskNotificationStatus": "advanced",
3835
3858
  "TaskOutcome": "advanced",
3859
+ "TaskOutputReplay": "advanced",
3836
3860
  "TaskRegistry": "advanced",
3837
3861
  "TaskRequestBody": "advanced",
3838
3862
  "TaskResult": "stable",
@@ -4274,6 +4298,7 @@
4274
4298
  "deriveRepoControlPlaneDir": "advanced",
4275
4299
  "deriveRepoKey": "advanced",
4276
4300
  "deriveRepoMemoryDir": "advanced",
4301
+ "deriveShadowedSet": "advanced",
4277
4302
  "deriveSupersededSet": "advanced",
4278
4303
  "deriveTripwire": "advanced",
4279
4304
  "deriveWiringManifest": "advanced",
@@ -4507,6 +4532,7 @@
4507
4532
  "normalizePersistedRuleHit": "advanced",
4508
4533
  "normalizePromptEpoch": "advanced",
4509
4534
  "normalizePublishedPath": "advanced",
4535
+ "normalizeReadRootCandidate": "advanced",
4510
4536
  "normalizeRules": "advanced",
4511
4537
  "normalizeToolResultProvenance": "advanced",
4512
4538
  "noticeAudienceOf": "advanced",
@@ -4563,6 +4589,7 @@
4563
4589
  "peerSendVerdictSeverity": "advanced",
4564
4590
  "peerSessionBoxHandle": "advanced",
4565
4591
  "permissionRuleSyncContract": "advanced",
4592
+ "permissionRuleWriteContract": "advanced",
4566
4593
  "pgQuery": "advanced",
4567
4594
  "physicalPathOf": "advanced",
4568
4595
  "physicalPathOfExisting": "advanced",
@@ -4572,6 +4599,7 @@
4572
4599
  "prepareCardApproval": "advanced",
4573
4600
  "prepareCcImport": "advanced",
4574
4601
  "prepareStarterBatch": "advanced",
4602
+ "probeMcpServers": "advanced",
4575
4603
  "probeParkRoundTrip": "stable",
4576
4604
  "probeSearchBackend": "advanced",
4577
4605
  "processFingerprint": "advanced",