Skip to content

@staix/agent-mem v0.23.0

Choose a tag to compare

@github-actions github-actions released this 08 Nov 20:42
· 61 commits to main since this release
a5756b4
  • Add createPlacementAttestation(home) for installed host library writers (#317, #319), sharing the CLI's fresh floor, effective-inventory, receipt and pin checks. The lazy callback derives its executing package root without an override and leaves legacy sync, person-only activation and placement state unchanged; safe typed refusals include the person-run remedy.

  • Keep well-formed public doi: and arxiv: identifier nodes when promoting a note to repo scope; host-local nodes such as run: and malformed identifiers are dropped and listed as before. Hashed entries and both log schemas are unchanged. docs/contracts.md names the reserved node prefixes and the host rule (#185, #315).

  • Add native Claude assistant Record extraction and a bounded, package-owned SessionStart instruction (#313, #314). Export parseRecordLines and RECORD_INSTRUCTION; home/repository records: false disables instruction emission and new extraction, with false winning. Records reuse the existing transcript summary staging/dedupe/replay path and native row timestamps, remain capture-only, screen source-row privacy metadata, refuse partial Record normalization at replay, and retain the accepted crash-before-cursor duplicate window. Replay opportunities follow whole-row staging to avoid deadline starvation. Instruction cost is 332 emitted bytes including its separator and approximately 83 tokens, within the unchanged context budget. No capture-row schema or Record-to-candidate conversion is added; existing R2/R3 limits are unchanged. AC6 remains a person-run live check.

  • Prioritize up to five screened, project-bound main-session Records ahead of summaries and raw captures in the same brief budget (#313, #321). A separate derived partial index follows the existing 128-row hook-build ceiling and off-hook large-store preparation. Record search weighting is 1.5 versus 1.25 for conversational events; existing slot allocation and session grouping stay unchanged. All-project CLI search preserves the complete canonical line and anchors.

  • Capture jcode session titles and compaction summaries on turn_end (#216, #320). amem hook jcode reads a bounded window of the session journal's meta forward from a per-session cursor (at most 256 KiB and a cooperative 40 ms parsing/publication budget, fail open, rows whose metadata resolves to this physical cwd or has no working directory) and stages one Title row per title change and one Compact row per compaction as jcode rows in spool format 3. They carry the same conversational weight and brief preference as Claude's, with no new weight or index. Symlinked and hardlinked journals, deny paths and secrets are refused, an oversized line is skipped and counted, and a replaced journal resumes without repeats. The first Title from a large existing journal waits until the bounded scan reaches its end. The journal-enabled hook workload has its own measured RSS baseline; existing limits are unchanged.

  • CI eviction-after-shrink measurements use 20 samples, retain the same limits, re-measure a hosted wall miss once and report eviction phase timing (#302, #318). Release workflows reuse successful identical-tree checks with both OS gates while retaining the version, ancestry, CHANGELOG, manifest, typecheck, boundary and pack gates; manual release dispatch remains proof-only (#302, #307).

  • Compatibility with N-1 (0.22.1), curated storage: log schemas, entry hashes, index filename and INDEX_VERSION are unchanged. Public DOI/arxiv repo identifiers are retained without rewriting past entries; host-local nodes remain filtered.

  • Compatibility with N-1 (0.22.1), capture and derived indexes: existing row encodings and table schema are unchanged. rows_brief_records_v1 is an additive derived capture index, separate from the released summary index; ordinary SQLite writers maintain it. Older readers keep their previous Record ranking and display behavior.

  • Compatibility with N-1 (0.22.1), hook-spool and configuration: 0.22.1 drains silently discard Record format-3 entries without counted loss, and its config parser refuses the records key, including false. Upgrade every amem sharing the home before relying on Records or setting that key. A person can append the existing home floor at 0.23.0 to exclude old participants; code never writes formats.json. Existing native event encodings are unchanged. Jcode Title/Compact use existing format 3; N-1 either drains each once or leaves it pending for the current reader.

  • Compatibility with N-1 (0.22.1), private sync placement: activation, initial locator, writer revision and journal formats, sticky holds and historical receipts are unchanged. Shared-v1 and generation/v1/v2 sync retain their behavior. The additive host callback supplies fresh expected-inventory proof; activation/renewal and root declaration remain person-only, and upgrading an inventoried install still requires explicit same-epoch renewal.

  • Compatibility with N-1 (0.22.1), private transcript cursors and metrics: the jcode session cursor has its own filename under hook-transcripts/, ignored by the old transcript scanner. Record adds refusal categories and emitted-instruction metrics; older readers do not gain their reporting. No captured or curated history is rewritten.

  • Compatibility with N-1 (0.22.1), root exports: parseRecordLines, RECORD_INSTRUCTION, createPlacementAttestation, PlacementWriterContextError and their public types are additive. Existing runtime export names remain; hosts must pin a supporting release before importing the new API.

  • Compatibility with N-1 (0.22.1), console/setup: console provider api 1 code and setup receipt formats are unchanged; package and Claude plugin version metadata advance together. Existing console registration remains valid at the same install root; after moving roots, rerun amem setup console --apply.