sticky-note-cli 3.0.0 → 3.1.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/README.md +94 -10
- package/bin/cli.js +807 -167
- package/bin/mcp-server.js +218 -36
- package/package.json +1 -1
- package/templates/CLAUDE.md +23 -0
- package/templates/hooks/inject-context.js +26 -12
- package/templates/hooks/on-error.js +22 -9
- package/templates/hooks/on-stop.js +12 -7
- package/templates/hooks/pre-tool-use.js +49 -52
- package/templates/hooks/session-end.js +138 -24
- package/templates/hooks/session-start.js +33 -9
- package/templates/hooks/sticky-codex.ps1 +20 -4
- package/templates/hooks/sticky-codex.sh +14 -5
- package/templates/hooks/sticky-utils.js +306 -20
- package/templates/hooks/track-work.js +27 -13
- package/templates/settings.json +7 -7
- package/templates/sticky-note-config.json +2 -0
- package/templates/sticky-note-install.yml +80 -0
package/README.md
CHANGED
|
@@ -50,6 +50,40 @@ their next session by relevance.
|
|
|
50
50
|
|
|
51
51
|
---
|
|
52
52
|
|
|
53
|
+
## What's New in V3.1
|
|
54
|
+
|
|
55
|
+
- **Full transcript capture**: Every session's complete verbatim transcript
|
|
56
|
+
is now captured by default — not just the narrative summary — stored
|
|
57
|
+
alongside audit logs and presence data, keyed by thread ID rather than
|
|
58
|
+
commit SHA (a thread's transcript belongs to the whole session, not to
|
|
59
|
+
any single commit it produced).
|
|
60
|
+
- **Secret redaction**: Before anything is written or synced, transcripts
|
|
61
|
+
(and the narrative/last_note/prompts summary fields) are scrubbed of
|
|
62
|
+
common secret shapes — cloud provider keys, tokens, private key blocks,
|
|
63
|
+
labeled `key=value` pairs. Best-effort, not a guarantee — see
|
|
64
|
+
[What Gets Captured](#what-gets-captured).
|
|
65
|
+
- **Opt-out**: set `"capture_transcripts": false` in
|
|
66
|
+
`sticky-note-config.json` for repos where this isn't wanted.
|
|
67
|
+
- **New CLI command**: `npx sticky-note transcript <thread-id>` (`--list`,
|
|
68
|
+
`--raw`) to read a thread's captured transcript(s).
|
|
69
|
+
- **New MCP tool**: `get_full_transcript(id)` — 9 tools total now.
|
|
70
|
+
|
|
71
|
+
## What's New in V3
|
|
72
|
+
|
|
73
|
+
- **Cloud backend (optional)**: Cloudflare KV-backed storage for real-time handoff — no git push/pull required. Hooks auto-detect `STICKY_URL` and switch between cloud and local mode. **Cloud is opt-in** — set `STICKY_URL` in `.env.sticky` to enable it; without it, the default git data-branch storage is used.
|
|
74
|
+
- **Git data-branch storage (default)**: Thread data stored in `sticky-note/data` orphan branch — offline-first, no cloud required, syncs via normal `git push/pull`.
|
|
75
|
+
- **Distributed presence**: Real-time heartbeat across all machines. See who's active *right now*, not at the time of your last pull. Conflict warnings when two developers edit the same file.
|
|
76
|
+
- **HTTP audit API**: Query audit trail by project, file, user, tool, and date range via cloud endpoints. No more grepping JSONL files.
|
|
77
|
+
- **MCP server**: 8 tools (`get_open_threads`, `get_stuck_threads`, `search_threads`, `get_session_context`, `write_thread`, `get_team_config`, `get_presence`, `get_audit_trail`) available via `npx sticky-note-cli mcp-server`.
|
|
78
|
+
- **GitHub Action auto-install**: Zero-touch org rollout via `sticky-note-install.yml`. Org secrets provide cloud config, repos get hooks on first push.
|
|
79
|
+
- **Codex cloud injection**: Codex wrapper reads thread context from cloud before session start — no longer blind to teammate activity.
|
|
80
|
+
- **New CLI commands**: `deploy-backend`, `migrate` (data-branch, default) / `migrate --to cloud` (opt-in), `mcp-server`, `init --v3`, `init --ci --no-prompts`
|
|
81
|
+
- **Backward compatible**: Without `STICKY_URL`, everything works exactly like V2.5. Cloud is opt-in.
|
|
82
|
+
|
|
83
|
+
See [V3 Migration Guide](docs/v3-migration-guide.md) and [Org Rollout Guide](docs/org-rollout.md).
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
53
87
|
## What's New in V2.7
|
|
54
88
|
|
|
55
89
|
- **Team Environment Sync**: Share your complete AI dev environment through git. Skills, agents, commands, MCP servers, and permissions auto-provision when teammates start a session — zero manual setup
|
|
@@ -257,6 +291,32 @@ Runs when the user stops a session. Builds a structured handoff summary
|
|
|
257
291
|
(what was done, what failed, current status, next steps) and saves it to
|
|
258
292
|
the thread's `handoff_summary` field.
|
|
259
293
|
|
|
294
|
+
### Full Transcript Capture
|
|
295
|
+
|
|
296
|
+
`session-end.js` also persists the complete verbatim session transcript —
|
|
297
|
+
Claude Code's native `transcript_path` JSONL file — not just the narrative
|
|
298
|
+
summary the other hooks extract from it.
|
|
299
|
+
|
|
300
|
+
- **Storage**: one JSONL file per thread at `transcripts/<thread-id>.jsonl`
|
|
301
|
+
in the `sticky-note/data` storage layer, alongside `audit/` and
|
|
302
|
+
`presence/`. Keyed by thread ID rather than commit SHA — a thread's
|
|
303
|
+
transcript belongs to the whole session, which may span zero, one, or
|
|
304
|
+
many commits, so it doesn't fit the commit-anchored git-notes model used
|
|
305
|
+
for line attribution. One entry is appended per contributing session, so
|
|
306
|
+
a thread resumed across multiple sessions accumulates its full history.
|
|
307
|
+
- **Redaction**: before anything is written, both the full transcript and
|
|
308
|
+
the narrative/last_note/prompts summary fields are scrubbed of
|
|
309
|
+
recognizable secret shapes (AWS/GitHub/Slack tokens, PEM private key
|
|
310
|
+
blocks, bearer tokens, JWTs, labeled `key=value` pairs). This is a
|
|
311
|
+
pattern-matching floor, not a guarantee — it won't catch a secret in an
|
|
312
|
+
unrecognized shape. Disable with `"redact_transcripts": false` if you'd
|
|
313
|
+
rather have the raw text (not recommended for a shared remote).
|
|
314
|
+
- **Opt-out**: set `"capture_transcripts": false` in
|
|
315
|
+
`sticky-note-config.json` to turn this off entirely for a repo.
|
|
316
|
+
- **Retrieval**: `npx sticky-note transcript <thread-id>` (`--list` to see
|
|
317
|
+
which threads have one, `--raw` for the untouched JSONL) or the
|
|
318
|
+
`get_full_transcript(id)` MCP tool.
|
|
319
|
+
|
|
260
320
|
---
|
|
261
321
|
|
|
262
322
|
## What Gets Captured
|
|
@@ -270,9 +330,16 @@ the thread's `handoff_summary` field.
|
|
|
270
330
|
| Narrative | [OK] | "Fixed auth token refresh flow" |
|
|
271
331
|
| Failed approaches | [OK] | What was tried, errors, files |
|
|
272
332
|
| Work type | [OK] | bug-fix, feature, debugging, etc. |
|
|
273
|
-
|
|
|
274
|
-
|
|
|
275
|
-
| Credentials | [
|
|
333
|
+
| Full session transcript | [OK] — opt-out via `capture_transcripts: false` | Verbatim user/assistant messages, tool calls, tool output. See [Full Transcript Capture](#full-transcript-capture). |
|
|
334
|
+
| Code content | [OK] — as part of the transcript, not separately | Code you write or read shows up verbatim in the transcript's tool_use/tool_result entries |
|
|
335
|
+
| Credentials | [WARN] best-effort redacted, not guaranteed | Recognizable secret shapes (cloud keys, tokens, private key blocks, labeled key=value pairs) are scrubbed before anything is written or synced — see [Full Transcript Capture](#full-transcript-capture) |
|
|
336
|
+
|
|
337
|
+
> [!NOTE]
|
|
338
|
+
> Prior to V3.1, this table said conversations and code content were never
|
|
339
|
+
> captured — that was true when only summary fields (narrative, prompts)
|
|
340
|
+
> existed. Full transcript capture changes that by design (see
|
|
341
|
+
> [What's New in V3.1](#whats-new-in-v31)). If your team doesn't want this,
|
|
342
|
+
> set `capture_transcripts: false`.
|
|
276
343
|
|
|
277
344
|
---
|
|
278
345
|
|
|
@@ -334,15 +401,21 @@ CLAUDE.md # AI instructions for Claude Code
|
|
|
334
401
|
## CLI Commands
|
|
335
402
|
|
|
336
403
|
```bash
|
|
337
|
-
npx sticky-note-cli init
|
|
338
|
-
npx sticky-note-cli init --
|
|
339
|
-
npx sticky-note-cli
|
|
340
|
-
npx sticky-note-cli
|
|
341
|
-
npx sticky-note-cli
|
|
404
|
+
npx sticky-note-cli init # Interactive setup
|
|
405
|
+
npx sticky-note-cli init --v3 # V3 setup with cloud backend config
|
|
406
|
+
npx sticky-note-cli init --ci # Non-interactive for CI/GitHub Action
|
|
407
|
+
npx sticky-note-cli init --codex # Setup with Codex wrapper
|
|
408
|
+
npx sticky-note-cli update # Update hook scripts (preserves data)
|
|
409
|
+
npx sticky-note-cli deploy-backend # Provision Cloudflare KV + deploy Worker
|
|
410
|
+
npx sticky-note-cli migrate --to cloud # Migrate V2 local data to cloud
|
|
411
|
+
npx sticky-note-cli mcp-server # Start MCP server (stdio transport)
|
|
412
|
+
npx sticky-note-cli status # Diagnostic report (includes cloud health)
|
|
413
|
+
npx sticky-note-cli threads # List threads with status icons
|
|
342
414
|
npx sticky-note-cli resume # List resumable threads
|
|
343
415
|
npx sticky-note-cli resume <id> # Resume a previous thread
|
|
344
416
|
npx sticky-note-cli resume --clear # Cancel active resume
|
|
345
417
|
npx sticky-note-cli resume-thread # Smart resume: --query, --user, --file (V2.5)
|
|
418
|
+
npx sticky-note-cli transcript <id> # Show a thread's captured transcript (--list, --raw) (V3.1)
|
|
346
419
|
npx sticky-note-cli audit # Query merged audit trail (all users)
|
|
347
420
|
npx sticky-note-cli who # Show active and recent team members
|
|
348
421
|
npx sticky-note-cli overlap # Detect file overlaps with teammates (V2.6)
|
|
@@ -397,6 +470,8 @@ Edit `.sticky-note/sticky-note-config.json`:
|
|
|
397
470
|
| `mcp_servers` | Shared MCP server references | `[]` |
|
|
398
471
|
| `skills` | Team skill definitions | `[]` |
|
|
399
472
|
| `conventions` | Team coding conventions (injected) | `[]` |
|
|
473
|
+
| `capture_transcripts` | Persist each session's full verbatim transcript (V3.1) | `true` |
|
|
474
|
+
| `redact_transcripts` | Scrub recognizable secrets before writing transcripts/narrative/prompts (V3.1) | `true` |
|
|
400
475
|
|
|
401
476
|
---
|
|
402
477
|
|
|
@@ -456,6 +531,7 @@ Add to `.mcp.json` at your project root:
|
|
|
456
531
|
| Tool | Description |
|
|
457
532
|
|------|-------------|
|
|
458
533
|
| `get_session_context(id)` | Full thread payload by ID |
|
|
534
|
+
| `get_full_transcript(id)` | Full verbatim session transcript(s) for a thread (V3.1) |
|
|
459
535
|
| `get_stuck_threads()` | All stuck threads with failed approaches |
|
|
460
536
|
| `search_threads(query)` | Keyword search across threads |
|
|
461
537
|
| `get_audit_trail(file, user, since, ...)` | Query per-user audit logs |
|
|
@@ -558,7 +634,13 @@ design discussion.
|
|
|
558
634
|
## FAQ
|
|
559
635
|
|
|
560
636
|
**Q: Does this capture my code or conversations?**
|
|
561
|
-
A:
|
|
637
|
+
A: As of V3.1, yes, by default — each session's full verbatim transcript is
|
|
638
|
+
captured (see [Full Transcript Capture](#full-transcript-capture)), which
|
|
639
|
+
necessarily includes code you write or read and the conversation itself.
|
|
640
|
+
Recognizable secrets are redacted before anything is written, but that's a
|
|
641
|
+
best-effort pattern match, not a guarantee. Set `"capture_transcripts": false`
|
|
642
|
+
in `sticky-note-config.json` to turn this off and go back to metadata-only
|
|
643
|
+
capture (files touched, timestamps, usernames, status, narrative summaries).
|
|
562
644
|
|
|
563
645
|
**Q: What happens with merge conflicts in sticky-note.json?**
|
|
564
646
|
A: `merge=union` in `.gitattributes` handles most cases automatically.
|
|
@@ -578,7 +660,9 @@ A: Run `npx sticky-note-cli init --codex`, then alias the wrapper:
|
|
|
578
660
|
|
|
579
661
|
## License
|
|
580
662
|
|
|
581
|
-
[MIT](LICENSE) — fully open source, no restrictions.
|
|
663
|
+
Client (hooks, CLI, templates): [MIT](LICENSE) — fully open source, no restrictions.
|
|
664
|
+
|
|
665
|
+
Cloud backend (`sticky-server/`): [AGPL-3.0](sticky-server/LICENSE)
|
|
582
666
|
|
|
583
667
|
---
|
|
584
668
|
|