personal memory agent
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

entities: document move, consolidate, merge + gotchas section

Three commands shipped to production without matching skill updates:
- move (3/18, commit 064c50e2) — cross-facet entity moves
- consolidate (4/17, commit 9730cd6d) — roll segment detections into journal entities
- merge (4/17, commit c9c1c8a9) — dedup two journal entities, preview-by-default

Add sections for each plus a Gotchas block calling out merge's --no-commit
default, consolidate's 85% fuzzy threshold, and the detect-vs-observe split.
Add Invoke via Bash line and expand TRIGGER with literal command names.

Part of skills audit req_loq3e2lk pass 1+2.

+93 -5
+93 -5
apps/entities/talent/entities/SKILL.md
··· 2 2 name: entities 3 3 description: > 4 4 Manage tracked entities for people, companies, projects, and tools within 5 - facets. Detect, attach, update, alias, search, and record observations. 6 - Query relationship strength and get full intelligence briefings. 5 + facets. Detect, attach, move, merge, consolidate, update, alias, search, 6 + and record observations. Query relationship strength and get full 7 + intelligence briefings. 7 8 Use when the owner asks about people, contacts, companies, or projects 8 - tracked in the journal, or wants to add, update, or search entities. 9 + tracked in the journal, or wants to add, update, merge, or search entities. 9 10 TRIGGER: entity, person, company, project, relationship, observation, 10 - who is, contact, knowledge graph, intelligence briefing. 11 + who is, contact, knowledge graph, intelligence briefing, consolidate, 12 + merge, move, deduplicate, sol call entities detect, 13 + sol call entities attach, sol call entities merge, 14 + sol call entities move, sol call entities consolidate, 15 + sol call entities intelligence. 11 16 --- 12 17 13 18 # Entities CLI Skill 14 19 15 - Use these commands to maintain facet-scoped entity memory from the terminal. 20 + Maintain facet-scoped entity memory. Invoke via Bash: `sol call entities <command> [args...]`. 16 21 17 22 **Environment defaults**: When `SOL_FACET` is set, all commands use it automatically. Same for `SOL_DAY` where DAY is accepted. 18 23 ··· 130 135 sol call entities update "Alicia Chen" "Discussed migration plan" -f work -d 20260115 131 136 ``` 132 137 138 + ## move 139 + 140 + ```bash 141 + sol call entities move ENTITY --from FACET --to FACET [--merge] [--consent] 142 + ``` 143 + 144 + Move an attached entity from one facet to another. 145 + 146 + - `ENTITY`: entity name or partial match. 147 + - `--from`: source facet. 148 + - `--to`: destination facet. 149 + - `--merge`: merge observations and relationship if an entity already exists in the destination. 150 + - `--consent`: assert that explicit owner approval was obtained before the move (agent audit trail). 151 + 152 + Behavior notes: 153 + 154 + - Without `--merge`: fails if the entity already exists in the destination facet. 155 + - With `--merge`: combines observations (deduplicated by content + observed_at) and preserves an existing relationship record; the source directory is removed afterwards. 156 + - Both facets must exist. 157 + 158 + Examples: 159 + 160 + ```bash 161 + sol call entities move "Alex Chen" --from personal --to work 162 + sol call entities move "Alex Chen" --from personal --to work --merge --consent 163 + ``` 164 + 133 165 ## aka 134 166 135 167 ```bash ··· 266 298 ```bash 267 299 sol call entities intelligence "Alicia Chen" -f work 268 300 ``` 301 + 302 + ## consolidate 303 + 304 + ```bash 305 + sol call entities consolidate [--full] 306 + ``` 307 + 308 + Roll up segment-level entity detections into journal-level entity records. 309 + 310 + - `--full`: scan all days. Default scans today only. 311 + 312 + Behavior notes: 313 + 314 + - Uses 85% fuzzy-name matching to merge duplicates. Threshold is not configurable. 315 + - Noise-filter entities are skipped. 316 + - Reports the number of new entities written; existing entities are updated in place with richer descriptions. 317 + 318 + Example: 319 + 320 + ```bash 321 + sol call entities consolidate 322 + sol call entities consolidate --full 323 + ``` 324 + 325 + ## merge 326 + 327 + ```bash 328 + sol call entities merge SOURCE_SLUG TARGET_SLUG [--commit/--no-commit] [--keep-source-as-aka/--no-keep-source-as-aka] 329 + ``` 330 + 331 + Plan or execute a merge of two journal entities (e.g., collapse duplicates after consolidation). 332 + 333 + - `SOURCE_SLUG`: entity slug to merge from (removed on `--commit`). 334 + - `TARGET_SLUG`: entity slug to merge into (canonical). 335 + - `--commit/--no-commit`: default `--no-commit`. Returns a JSON plan with no mutations. Pass `--commit` to persist. 336 + - `--keep-source-as-aka/--no-keep-source-as-aka`: default `--keep-source-as-aka`. Preserve the source display name as an alias on the target. 337 + 338 + Behavior notes: 339 + 340 + - Observations and aliases from source are merged into target with deduplication. 341 + - If any other entity references `SOURCE_SLUG` in its alias list, the merge is rejected and the offenders are listed. 342 + - If both entities have principals assigned, the merge is rejected. 343 + 344 + Examples: 345 + 346 + ```bash 347 + sol call entities merge jeremy-miller jeremie-miller 348 + sol call entities merge jeremy-miller jeremie-miller --commit 349 + ``` 350 + 351 + ## Gotchas 352 + 353 + - **`merge` previews by default.** Default is `--no-commit`: it emits a JSON plan without mutating anything. Pass `--commit` when you actually want the merge to happen. 354 + - **`consolidate` auto-merges at 85%.** Fuzzy-name matching runs unattended; review the output whenever it reports new entities to catch unexpected consolidations. 355 + - **`detect` requires TYPE ≥ 3 chars.** Shorter types are silently rejected. 356 + - **`observe` is for durable traits, `detect` is for day-scoped sightings.** Mixing them skews relationship-strength scoring.