@unblocklabs/unblock-memory 0.3.16 → 0.3.18

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.
@@ -1,112 +1,119 @@
1
1
  ---
2
2
  name: people-whisperer
3
- description: Maintain useful PeopleSQL dossiers from ordinary memory and session evidence so future conversations start with accurate person context.
3
+ description: Maintain brief PeopleSQL background snippets identifying a person and their relationship to the agent, not behavioral profiles or task history.
4
4
  ---
5
5
 
6
6
  # People Whisperer
7
7
 
8
- Improve the agent's durable understanding of people it interacts with. Prefer no
9
- write over routine, repetitive, weakly inferred, or already captured information.
10
- The goal is a useful future conversation, not processing every interaction.
11
-
12
- ## Choose and inspect
13
-
14
- - For a named or current person, call `memory_people_inspect` with
15
- `view: "person"` and their `personId` or exact Slack identity.
16
- - For autonomous maintenance, call `memory_people_inspect` with
17
- `view: "people"` and an optional `limit`. Use the returned identity,
18
- `lastSeenAt`, dossier presence, and dossier `reviewedAt` only as context for
19
- your judgment. `reviewedAt` is the last dossier write, not a due date.
20
- - Do not assume every listed person needs work. You may update several people or
21
- nobody.
22
-
23
- ## Investigate
24
-
25
- 1. Read the current dossier when one exists.
26
- 2. Search for meaningful information with `memory_search`. Use targeted queries,
27
- relevant corpora, and session metadata filters rather than treating a fixed
28
- recent-message window as the person's history.
29
- 3. Follow useful `qmd://` results with `memory_get`. If recent OpenClaw sessions
30
- are not indexed, use `memory_sync_sessions` and check `memory_sync_status`
31
- before searching again.
32
- 4. Prefer direct statements, repeated behavior, decisions, feedback, and
33
- outcomes. Distinguish observation, reported information, inference, and agent
34
- assessment. Do not promote small talk or one ambiguous exchange into a durable
35
- claim.
36
- 5. Preserve still-useful existing claims. Dossier replacement is complete, not
37
- a patch.
38
-
39
- Ordinary `memory_search` supports multiple targeted calls and up to 20 results
40
- per call. People Whisperer does not impose its own result window or require the
41
- agent to acknowledge what it inspected.
42
-
43
- ## Write only when useful
44
-
45
- Before adding or materially changing a dossier claim, use `memory_review_claim`
46
- when evidence review is enabled. Supply one atomic claim naming the person and
47
- its exact `qmd://` evidence ranges. Resolve wrong-person, date, scope, negation,
48
- and certainty mismatches before writing. This is advisory, not a mandatory tool
49
- receipt or proof of truth; disabled/unavailable reviews require your own source
50
- verification. Do not re-review unchanged claims just to generate activity.
51
-
52
- Call `memory_people_update` with `action: "replace_dossier"`, the `personId`, a
53
- concise `reason` for the change, and a complete dossier. The plugin records the
54
- reason and exact before/after snapshots transactionally. Keep the complete dossier
55
- under the plugin's 64 KiB serialized limit:
8
+ Help the agent recognize whom it is talking to, without telling it what that
9
+ person wants. A dossier is a short background primer, not a personality model.
10
+
11
+ ## Inspect and research
12
+
13
+ - Use `memory_people_inspect` with `view: "person"` and an exact `personId` or
14
+ Slack identity. For maintenance, list `view: "people"` first; not everyone
15
+ needs an update. `reviewedAt` records the last write, not a due date.
16
+ - Research only three questions: who is this person (explicit role and
17
+ organization); what enduring organizational context identifies them; and what
18
+ is their relationship to this agent (e.g. personal assistant or AI counterpart)?
19
+ - When enabled, call `memory_people_prime({ personId, agentName })`. It retrieves
20
+ approved sources and grades background eligibility, not general relevance.
21
+ Follow useful source ranges with `memory_get`. Scores are triage, not facts.
22
+ `unknown` stays unknown; `evidence_found` still needs verification. Inspect
23
+ uncertain evidence rather than guessing.
24
+ - Use bounded, targeted `memory_search` calls for missing identity/relationship
25
+ answers and newer contradictory role or affiliation statements. Check available
26
+ agent identity/user context too, but do not treat the agent's own speculation
27
+ or an existing dossier as independent evidence. Follow source attribution.
28
+ Do not send local files to TypeSafe unless they are in approved corpora.
29
+ - Prefer explicit human statements or authoritative directory/identity context.
30
+ Topics someone discusses do not establish their job, priorities or responsibilities.
31
+ Old evidence can establish enduring background; unresolved changes in role,
32
+ organization or relationship must be investigated or omitted, not guessed away.
33
+ - If recent sessions are missing, use `memory_sync_sessions` and check
34
+ `memory_sync_status` before searching again. Disabled/unavailable primers do
35
+ not prevent ordinary source research.
36
+
37
+ ## Draft a recognition snippet
38
+
39
+ Write one short paragraph, usually 2–3 sentences and **at most 70 words**. This
40
+ is a ceiling, not a target. Include only useful, explicit identity, role,
41
+ organization, enduring team context and person-agent relationship background.
42
+
43
+ Exclude preferences, working style, priorities, success criteria, feedback,
44
+ permissions, behavioral advice, business missions, goals, projects, commitments and dated anecdotes—even
45
+ when supported. A request for sales copy is not proof of a sales role. A technical
46
+ discussion is not proof of an engineering role. Never fill gaps with activity
47
+ summaries or invent formal titles. Memory is not authorization.
48
+
49
+ For legacy dossiers, deliberately remove behavioral sections and incident history.
50
+ Do not preserve an old claim merely because it was previously stored. Retain only
51
+ verified background; if no useful background can be established, prefer no dossier.
52
+
53
+ ## Submit the verified snippet
54
+
55
+ Use `memory_people_update` with `action: "replace_dossier"`, the exact `personId`,
56
+ a concise `reason`, optional `agentName` if no identity name is configured, and
57
+ the complete `dossier` (not a patch):
56
58
 
57
59
  ```json
58
60
  {
59
- "action": "replace_dossier",
60
- "personId": "PeopleSQL person ID",
61
- "reason": "Added a durable preference supported by recent sessions.",
62
- "dossier": {
63
- "schemaVersion": 1,
64
- "blurb": "Concise context worth having before the next conversation.",
65
- "sections": [
66
- {
67
- "category": "preferences",
68
- "claims": [
69
- {
70
- "statement": "A durable, specific claim.",
71
- "evidence": [
72
- {
73
- "source": "session",
74
- "locator": "qmd://path-returned-by-memory-search",
75
- "observedAt": "2026-08-31T12:00:00Z"
76
- }
77
- ],
78
- "epistemicType": "observed",
79
- "confidence": "high"
80
- }
81
- ]
82
- }
83
- ]
84
- }
61
+ "schemaVersion": 1,
62
+ "blurb": "Mira is the founder of ExampleCo.",
63
+ "sections": [{
64
+ "category": "role",
65
+ "claims": [{
66
+ "statement": "Mira is the founder of ExampleCo.",
67
+ "evidence": [{ "source": "session", "locator": "qmd://source/path.md#L12-L15" }],
68
+ "epistemicType": "reported",
69
+ "confidence": "high"
70
+ }]
71
+ }]
85
72
  }
86
73
  ```
87
74
 
88
- Allowed section categories are `role`, `priorities`, `preferences`,
89
- `successCriteria`, `workingStyle`, `relationship`, and `openLoops`. Evidence
90
- sources are `session`, `memory`, `directory`, or `manual`; `observedAt` and
91
- `confidence` are optional. Epistemic types are `observed`, `reported`,
92
- `inferred`, or `agent_assessment`.
93
-
94
- Make the blurb immediately useful, concise, and honest about uncertainty. Do not
95
- stuff it with biography or raw evidence. Claim evidence references are
96
- provenance, not work receipts.
97
-
98
- Use `delete_dossier` when the current dossier is too unreliable to inject and
99
- cannot be responsibly repaired; deletion also requires a concise `reason`. Use
100
- `memory_people_inspect` with `view: "dossier_changes"`, the `personId`, and
101
- optional `limit`/`offset` to list small newest-first history summaries. Follow a
102
- summary with `view: "dossier_change"`, the `personId`, and its `changeId` only
103
- when you need the exact before/after dossier and blurb. Follow `nextOffset` to page.
104
- Use `set_injection` to disable or re-enable
105
- whispers for one person without deleting their dossier. Company, todo, and
106
- person-status actions are available for the corresponding data changes.
107
-
108
- ## Finish
109
-
110
- Report whom you investigated, which memory or sessions informed any write, what
111
- changed, and why skipped people did not need an update. Do not manufacture a
112
- write to show activity.
75
+ Include evidence claims for every assertion in the blurb, including relationship
76
+ claims. New writes allow only `role` and `relationship` sections and `observed`
77
+ or `reported` facts. Evidence sources are `session`, `memory`, `directory` or
78
+ `manual`; optional `observedAt` must be an ISO timestamp. Confidence is optional
79
+ `low`, `medium` or `high`. Keep source references out of the injected blurb.
80
+ The configured character limit and 64 KiB serialized dossier limit also apply.
81
+
82
+ The write tool automatically reviews the blurb before saving. No separate review
83
+ call is required. Use exact `qmd://path#Lstart-Lend` evidence locators: at most three
84
+ distinct ranges, each at most 120 lines and together 6,000 characters. Only the
85
+ primer's approved corpora can be sent to TypeSafe. The check tests complete support,
86
+ background-only content and explicit rather than activity-inferred facts; it does
87
+ not replace your source verification.
88
+
89
+ - `ok`: saved; `verification` distinguishes `typesafe` from `manual`.
90
+ - `needs_review`: failed/uncertain check; existing dossier unchanged. Inspect the
91
+ evidence, remove unsupported clauses or resolve attribution before resubmitting.
92
+ - `review_unavailable`: disabled review, missing key, non-indexed evidence or
93
+ provider failure; existing dossier unchanged. Retry or verify manually.
94
+ - `conflict`: the person/dossier changed during review; inspect again before retrying.
95
+
96
+ For direct human corrections, non-indexed identity context or an unavailable/incorrect
97
+ review, you may add `manualVerification` to the update **only after checking every
98
+ assertion and background eligibility yourself**. This is a source-specific attestation,
99
+ not a retry switch. Explain the original evidence and any override, e.g.:
100
+
101
+ ```json
102
+ {
103
+ "manualVerification": "Verified against Mira's explicit correction in this conversation on 2026-09-18: she founded ExampleCo. The snippet contains only that identity fact."
104
+ }
105
+ ```
106
+
107
+ Keep accurate manual/directory provenance on the claims. Do not invent indexed
108
+ citations. Manual verification skips TypeSafe and records the explanation in change
109
+ history; it never reports a provider pass or bypasses the word/category limits.
110
+ If you cannot verify the snippet, leave it unchanged and report the limitation.
111
+
112
+ Only the blurb is injected; evidence stays in storage. Replacements/deletions
113
+ preserve transactional before/after history and a reason. Use `delete_dossier`
114
+ when a misleading legacy profile cannot be responsibly replaced, or `set_injection`
115
+ to pause it without deleting it. Do not erase raw memory or dossier history.
116
+ Inspect history through `dossier_changes` and `dossier_change` views.
117
+
118
+ Report the resulting snippets, source limitations, changes and intentionally
119
+ unknown answers. More words or more claims are not success metrics.