Skip to content

feat(twister): per-focus memory and status-brief surface on the Plot tool - #373

Merged
KrisBraun merged 1 commit into
mainfrom
priority-memory-surface
Aug 4, 2026
Merged

feat(twister): per-focus memory and status-brief surface on the Plot tool#373
KrisBraun merged 1 commit into
mainfrom
priority-memory-surface

Conversation

@KrisBraun

Copy link
Copy Markdown
Contributor

Adds three methods to the Plot tool, all gated on FocusAccess.Full:

  • getMemory(focusId) — reads a focus's agent memory: short entries a twist records about what the user is trying to achieve, each with optional absolute date (YYYY-MM-DD). Entries whose date is long past are excluded; a recently overdue entry is still returned, since an objective past its date may simply be unfinished. Undated entries never expire.
  • setMemory(focusId, entries) — whole-list rewrite: read the current memory, merge the new fact, drop superseded entries, write the complete result. Dates must be absolute; the platform prunes expired entries, caps list size, and may shorten very long entry text.
  • getBriefs() — the current status brief for each of the user's non-archived focuses: an optional headline, labelled supporting bullets (needs_you / new / next), a quiet flag, and a generation timestamp.

Together these let a conversational twist maintain standing context per focus and ground its replies in the same status summary the user sees.

Changeset: @plotday/twister minor.

🤖 Generated with Claude Code

…tool
Adds three methods to the Plot tool, all requiring `FocusAccess.Full`:
- `getMemory(focusId)` returns a focus's agent memory — the short facts
Plot has been told about that focus. Entries whose date is long past
are excluded; a recently overdue entry is still returned, since an
objective past its date may simply be unfinished. Undated entries
never expire.
- `setMemory(focusId, entries)` replaces that memory. It is a whole-list
rewrite rather than an append, so a twist reads the current memory,
merges in the new fact, drops anything it supersedes, and writes the
result. Dates are absolute `YYYY-MM-DD`, so relative wording is
resolved before writing.
- `getBriefs()` returns the current status brief for each of the owner's
non-archived focuses: a headline, labelled supporting bullets, and
whether the focus is quiet.
The accompanying `FocusMemoryEntry` and `FocusBrief` types are exported
alongside the existing Plot tool types.
@KrisBraun
KrisBraun merged commit adad9cb into mainAug 4, 2026
1 check passed
@KrisBraun
KrisBraun deleted the priority-memory-surface branch August 4, 2026 15:00
@plot-app-builderplot-app-builderBot mentioned this pull request Aug 4, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@KrisBraun