liteagents 2.8.2 → 2.9.0
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.
- package/CHANGELOG.md +30 -0
- package/README.md +10 -10
- package/installer/path-manager.js +3 -2
- package/package.json +1 -1
- package/packages/ampcode/commands/friction/friction.js +320 -116
- package/packages/ampcode/commands/remember.md +74 -44
- package/packages/claude/commands/friction/friction.js +320 -116
- package/packages/claude/commands/remember.md +74 -44
- package/packages/droid/commands/friction/friction.js +320 -116
- package/packages/droid/commands/remember.md +74 -44
- package/packages/opencode/command/friction/friction.js +320 -116
- package/packages/opencode/command/remember.md +74 -44
package/CHANGELOG.md
CHANGED
|
@@ -17,6 +17,36 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
17
17
|
|
|
18
18
|
---
|
|
19
19
|
|
|
20
|
+
## [2.9.0] - 2026-05-26
|
|
21
|
+
|
|
22
|
+
Redesign of the `/friction` → `/remember` memory pipeline so friction stops poisoning hot memory and antigens come from what the user actually said. Applied identically across all four tool packages (claude, opencode, ampcode, droid).
|
|
23
|
+
|
|
24
|
+
### Changed
|
|
25
|
+
- **`/friction` now seeds antigens from observed user reactions, not machine proxies.** Antigen candidates are anchored only on real user reactions (corrections, curses, interrupts); inferred signals survive only as corroborating severity. Clustering is by what the user *said* (content/phrase overlap) instead of `(signal, tool_pattern)`, and recurrence × severity drives a `suggested_artifact` — only patterns recurring across 5+ sessions are meant to load into hot memory. On a 253-session corpus this took false hot preferences from 15 → 0.
|
|
26
|
+
- **`/remember` rewritten to consolidate from friction's short quotes, never raw logs.** It classifies each reaction's target (agent vs. self), drops self-corrections, semantically merges paraphrases that lexical clustering left split, and tiers antigens by recurrence. The generated `MEMORY.md` section is renamed `Preferences` → `Antigens` (High loads hot / Medium recorded / Low = episode).
|
|
27
|
+
|
|
28
|
+
### Fixed
|
|
29
|
+
- **Terminal pastes are no longer mistaken for friction.** Pasted SSH/shell dumps (prompt lines like `> sudo …` and `root@host:~#`, command output) were captured as user reactions, polluting antigen keywords with shell vocabulary (`postconf`, `qemu`). They are now detected and excluded from both signal detection and keyword extraction, while genuine short corrections that merely mention a command are preserved.
|
|
30
|
+
- **Profanity only counts when it's aimed at the agent.** Narrative/rhetorical curses ("does anyone search any shit?", a pasted reddit story) no longer raise a `user_curse` signal; a curse is kept only in a short reaction turn or when an agent-directed word sits next to it.
|
|
31
|
+
- **Self-corrections are now surfaced to the consolidation step.** The `self_suspect` hint ("wrong project", "nevermind") is propagated from candidate to cluster and rendered in `antigen_review.md`, so `/remember` is told to confirm agent-vs-self target before treating a cluster as an antigen.
|
|
32
|
+
|
|
33
|
+
### Removed
|
|
34
|
+
- Dead scaffolding left over from the redesign in `friction.js`: the unused `overlap()` helper, the `MIN_KW`/`MIN_INTER` constants, the unread `selfCount` counter (superseded by the `anySelf` flag), and the always-empty `top_files` field with its unreachable renderer block.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## [2.8.3] - 2026-05-24
|
|
39
|
+
|
|
40
|
+
### Security
|
|
41
|
+
- **Path containment uses a boundary match.** `installer/path-manager.js` confined installs to the home directory via `startsWith(homeDir)`, which would also accept a sibling like `${homeDir}-evil`. Now matches on a path separator (`=== homeDir || startsWith(homeDir + path.sep)`), and likewise for the temp dir. Defense-in-depth for a local installer; verified install/backup/uninstall still work.
|
|
42
|
+
|
|
43
|
+
### Changed
|
|
44
|
+
- **`docs/INSTALLER_GUIDE.md` custom-path docs now match the installer.** It advertised `/opt/...`, `/mnt/...`, and team/external locations, but the installer confines paths to the home directory (or temp dir). Documented the real rule and corrected the examples.
|
|
45
|
+
- Removed decorative emoji from `README.md` headings (kept the friction traffic-light indicators).
|
|
46
|
+
- CI: bumped `actions/checkout` and `actions/setup-node` to v6 (Node 24) ahead of the June 2026 Node 20 deprecation.
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
20
50
|
## [2.8.2] - 2026-05-24
|
|
21
51
|
|
|
22
52
|
Maintenance release: removes the last of the legacy 3-variant system, fixes the broken `liteag` alias and post-install message, and trims the shipped documentation down to the README plus an accurate installer guide. No changes to the installed agents/commands/skills.
|
package/README.md
CHANGED
|
@@ -28,7 +28,7 @@ Specialized AI agents and workflow commands for product management, agile develo
|
|
|
28
28
|
|
|
29
29
|
---
|
|
30
30
|
|
|
31
|
-
##
|
|
31
|
+
## Quick Start
|
|
32
32
|
|
|
33
33
|
```bash
|
|
34
34
|
# Option 1: NPX (recommended)
|
|
@@ -71,7 +71,7 @@ liteagents
|
|
|
71
71
|
|
|
72
72
|
---
|
|
73
73
|
|
|
74
|
-
##
|
|
74
|
+
## Hot Memory — project-local learning from your own sessions
|
|
75
75
|
|
|
76
76
|
Liteagents ships a three-command pipeline that turns Claude Code's session logs into project-local memory. No databases, no external services, just markdown files the assistant reads via `@MEMORY.md`.
|
|
77
77
|
|
|
@@ -95,7 +95,7 @@ Per-Project:
|
|
|
95
95
|
WORST: my-app/0203-1630-11eb903a peak=225 turns=127
|
|
96
96
|
BEST: web-client/0202-2121-8d8608e1 peak=0 turns=4
|
|
97
97
|
|
|
98
|
-
Verdict:
|
|
98
|
+
Verdict: USEFUL Intervention predictability: 93%
|
|
99
99
|
```
|
|
100
100
|
|
|
101
101
|
Results land in `.claude/friction/antigen_review.md` with projects, error patterns, and offending tool sequences called out per cluster — so `/remember` can pick them up and encode them as rules the next session sees.
|
|
@@ -104,7 +104,7 @@ Results land in `.claude/friction/antigen_review.md` with projects, error patter
|
|
|
104
104
|
|
|
105
105
|
---
|
|
106
106
|
|
|
107
|
-
##
|
|
107
|
+
## What's Included
|
|
108
108
|
|
|
109
109
|
### 11 Agents
|
|
110
110
|
|
|
@@ -132,7 +132,7 @@ Results land in `.claude/friction/antigen_review.md` with projects, error patter
|
|
|
132
132
|
|
|
133
133
|
**Manual Skills/Commands (20):**
|
|
134
134
|
|
|
135
|
-
*Hot Memory Pipeline (3)* — see the [
|
|
135
|
+
*Hot Memory Pipeline (3)* — see the [Hot Memory](#hot-memory--project-local-learning-from-your-own-sessions) section above for the full walkthrough:
|
|
136
136
|
- **stash** - Snapshot session context to `.claude/stash/` before compaction, handoff, or ending complex work
|
|
137
137
|
- **friction** - Analyze all JSONL sessions for frustration signals, cluster failures per project, surface antigens
|
|
138
138
|
- **remember** - Consolidate stashes + friction antigens into `.claude/memory/MEMORY.md`; auto-injected via `@MEMORY.md`
|
|
@@ -162,7 +162,7 @@ Results land in `.claude/friction/antigen_review.md` with projects, error patter
|
|
|
162
162
|
|
|
163
163
|
---
|
|
164
164
|
|
|
165
|
-
##
|
|
165
|
+
## Documentation
|
|
166
166
|
|
|
167
167
|
| Document | Description |
|
|
168
168
|
|----------|-------------|
|
|
@@ -171,7 +171,7 @@ Results land in `.claude/friction/antigen_review.md` with projects, error patter
|
|
|
171
171
|
|
|
172
172
|
---
|
|
173
173
|
|
|
174
|
-
##
|
|
174
|
+
## Example Workflows
|
|
175
175
|
|
|
176
176
|
**Feature Development:**
|
|
177
177
|
```
|
|
@@ -198,7 +198,7 @@ Results land in `.claude/friction/antigen_review.md` with projects, error patter
|
|
|
198
198
|
|
|
199
199
|
---
|
|
200
200
|
|
|
201
|
-
##
|
|
201
|
+
## Stats
|
|
202
202
|
|
|
203
203
|
- **11** Specialized Agents
|
|
204
204
|
- **22** Workflow Commands & Skills
|
|
@@ -207,7 +207,7 @@ Results land in `.claude/friction/antigen_review.md` with projects, error patter
|
|
|
207
207
|
|
|
208
208
|
---
|
|
209
209
|
|
|
210
|
-
##
|
|
210
|
+
## Links
|
|
211
211
|
|
|
212
212
|
- **npm:** https://www.npmjs.com/package/liteagents
|
|
213
213
|
- **GitHub:** https://github.com/hamr0/liteagents
|
|
@@ -215,7 +215,7 @@ Results land in `.claude/friction/antigen_review.md` with projects, error patter
|
|
|
215
215
|
|
|
216
216
|
---
|
|
217
217
|
|
|
218
|
-
##
|
|
218
|
+
## License
|
|
219
219
|
|
|
220
220
|
Apache-2.0 © 2026 hamr0 — see [LICENSE](LICENSE).
|
|
221
221
|
|
|
@@ -58,8 +58,9 @@ class PathManager {
|
|
|
58
58
|
const homeDir = this.homeDir;
|
|
59
59
|
const tmpDir = os.tmpdir();
|
|
60
60
|
|
|
61
|
-
|
|
62
|
-
const
|
|
61
|
+
// Match on a path boundary so a sibling like `${homeDir}-evil` can't pass.
|
|
62
|
+
const isInHome = sanitized === homeDir || sanitized.startsWith(homeDir + path.sep);
|
|
63
|
+
const isInTmp = sanitized === tmpDir || sanitized.startsWith(tmpDir + path.sep);
|
|
63
64
|
|
|
64
65
|
if (!isInHome && !isInTmp) {
|
|
65
66
|
return {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "liteagents",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.9.0",
|
|
4
4
|
"description": "AI development toolkit with 11 specialized agents and 23 commands including live-canvas UI design with click-to-annotate feedback. Simple one-question installer for Claude, Opencode, Ampcode, and Droid.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|