sesame: @aliou/sesame@0.12.0
Minor Changes
-
5353588: Add skill-based filtering.
Sesame now records which skills each session used, from two signals:
skill-invocationcustom messages injected by theskill-autocompletehook, and read tool calls that load aSKILL.mdfile. Usage is stored in a newsession_skillstable.sesame search --skill <name>filters by exact skill name (case-insensitive)sesame search --skill-path <substring>filters bySKILL.mdpath; combined with--skillboth must match the same skillsesame skillslists indexed skills with session counts, sources, and paths- Search output lists each result’s skills
- Library adds
SearchOptions.skill/skillPath, the same two options onListSessionsOptions, plusgetSessionSkills,getSkillsForSessions,listIndexedSkills,detectSkills,skillNameFromPath, andParsedSession.skills
Migration 4 resets stored mtimes, so the next
sesame indexbackfills skills for existing indexes.insertSessionnow replaces an existing session inside its transaction, so an interrupted re-index can no longer leave a session deleted without a replacement. -
ab12849: Search sessions by tool call parameters.
Allowlisted tool call parameters are now extracted at index time into a new
tool_call_argstable (migration 7), powering parameter-level filters:SearchOptionsandListSessionsOptionsgaintoolArgs: ToolArgFilter[]— each{ tool, key, value }filter is anEXISTScheck (AND across filters,valuematched as a substring)- Library exports
TOOL_ARG_ALLOWLIST,isAllowedToolArg,extractToolArgs, and theToolArgFiltertype - CLI gains a repeatable
--arg tool:key=valueflag that validates against the allowlist (e.g.sesame search --arg find:pattern=useStorage)
The allowlist covers pi’s native tools (
bash,read,write,edit,find,grep,ls) plus custom harness tools (find_sessions,list_sessions,read_session,read_url,synthetic_web_search,process). Migration 7 invalidates stored mtimes so the next index backfills existing sessions. -
b5e0c78: Record skill usage actor/detail and add fuzzy skill search.
session_skills.sourceis replaced byactor(user|agent) plusdetail(slash|autocomplete| null). A third detection shape recognizes/skill:nameslash invocations, where pi inlines a<skill name= location=>block at the start of the user message. Migration 5 backfillsactorfrom the legacysourcecolumn.A new global skill catalog (
skills+skills_fts, migration 6) records skill description versions — one row per distinct (name, description, path), bumped onlast_seen_atwhen re-encountered. Descriptions come from invocation hook details or SKILL.md frontmatter.SearchOptions/ListSessionsOptionsgainskillQuery(fuzzy over name + description; an unmatched query returns no sessions)- Library adds
matchSkills,upsertSkillCatalog,skillNameExists,parseSkillDescription, and theSkillMatchtype;SkillSummaryreplacessourceswithactors+detailsand gainsdescription ListSkillsOptions.sourcebecomesactor- CLI:
sesame search --skill <text>falls back to fuzzy matching when the text is not an exact skill name;sesame skills --sourcebecomes--actorand prints the latest known description
Patch Changes
-
3c6c5dc: Fix indexing on databases migrated from 0.11.
Migration 5 kept the legacy
session_skills.sourcecolumn, which on migrated indexes isTEXT NOT NULLwith no default — every session using a skill then failed to index withNOT NULL constraint failed: session_skills.source. Migration 8 drops the column (guarded, no-op where it is already absent). Includes a regression test that inserts a skilled session into a pre-migration database.