chore: prepare for v1.2.0 release

- Bump version to 1.2.0
- Add package.json exports and files whitelist
- Update .gitignore to exclude .opencode/ and .opencode-agenthub/
- Fix docs: active files tracked in tool.execute.after (not before)
- Fix docs: exitCode undefined is ignored (not success)
- Fix docs: session ID is hashed in storage path
- Fix docs: workspace memory survives within same workspace
This commit is contained in:
Ralph Chang
2026-04-26 14:17:54 +08:00
parent f988af4453
commit 9892012d8b
4 changed files with 33 additions and 12 deletions
+10 -10
View File
@@ -11,7 +11,7 @@ The Working Memory Plugin implements a **three-layer memory architecture** desig
│ • Types: feedback | project | decision | reference │
│ • Sources: explicit | compaction | manual │
│ • Limits: 5200 chars / 28 entries │
│ • Survives: session reset, workspace switch
│ • Survives: session reset, compaction (same workspace)
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
@@ -135,16 +135,16 @@ Track current session context automatically:
### Active Files
Automatically tracked from `tool.execute.before` events:
Automatically tracked from `tool.execute.after` events:
| Action | Ranking Boost |
|--------|---------------|
| `write` | 4x |
| `edit` | 3x |
| `read` | 2x |
| `grep` | 1x |
| Action | Weight |
|--------|--------|
| `edit` | 50 |
| `write` | 45 |
| `grep` | 30 |
| `read` | 20 |
Files are ranked by: `count * action_weight * recency_decay`
Files are ranked by: `ACTION_WEIGHT[action] + count * 3`
### Open Errors
@@ -161,7 +161,7 @@ Tracked from `tool.execute.after` events when `exitCode !== 0`:
**False Positive Guards**:
- Commands like `git log`, `cat` with "error" in output are ignored
- Only actual command failures (`exitCode !== 0`) trigger errors
- `exitCode === undefined` is treated as success (no error tracking)
- `exitCode === undefined` is ignored (no error created, no error cleared)
### Error Fingerprinting
+8 -1
View File
@@ -90,7 +90,7 @@ Score formula: `count * action_weight * recency_decay`
└── {workspaceKey}/
├── workspace-memory.json # Long-term memory
└── sessions/
└── {sessionID}.json # Session state
└── {hashedSessionID}.json # Session state (hashed)
```
### Workspace Key
@@ -100,6 +100,13 @@ Score formula: `count * action_weight * recency_decay`
const workspaceKey = sha256(realpath(workspaceRoot)).slice(0, 16);
```
### Session ID
```typescript
// Hashed session ID for privacy
const hashedSessionID = sha256(sessionID).slice(0, 32);
```
## Customization
To customize limits, edit the constants in `src/types.ts`: