snipara-companion 3.6.21 → 3.6.23

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 CHANGED
@@ -4,6 +4,15 @@ Release notes for `snipara-companion`, newest first.
4
4
 
5
5
  ## Unreleased
6
6
 
7
+ ## New In 3.6.22 - 2026-09-12
8
+
9
+ - Saves explicit session summaries and file checkpoints to the hosted journal,
10
+ requiring a journal entry id before reporting success or rotating the session.
11
+ - Retains bounded, redacted local receipts and supports `session-end --retry`
12
+ after a failed write. Empty checkpoints are explicitly skipped.
13
+ - Supports summary input through stdin and host session ids for Codex Stop hooks.
14
+ Reports telemetry delivery separately from journal persistence.
15
+
7
16
  ## New In 3.6.21 - 2026-08-31
8
17
 
9
18
  - Requires manual device-code entry and explicit all-project consent for the
package/README.md CHANGED
@@ -484,6 +484,13 @@ npx -y snipara-companion workflow producer-review --latest --outcome useful --re
484
484
  npx -y snipara-companion handoff --summary "auth impact mapped" --next "run auth tests"
485
485
  ```
486
486
 
487
+ For a stricter engineering workflow, add `--strict` to a completed
488
+ `workflow task-commit` or `workflow phase-commit`. Strict phase closeout requires
489
+ all declared tasks to be completed or skipped and requires every supplied
490
+ verification item to be passed. The default remains backward-compatible for
491
+ older workflows; strict mode is recommended for release, security, and
492
+ multi-agent work.
493
+
487
494
  Managed workflow judgments use risk-based authority. `info` and `watch`
488
495
  recommendations are accepted locally by policy and remain auditable; `risk` and
489
496
  `block` recommendations still need `workflow judgment-respond`. The immutable
@@ -664,6 +671,21 @@ Launch assets, demo scripts, and post drafts live in
664
671
  [docs/launch/LAUNCH_KIT.md](./docs/launch/LAUNCH_KIT.md).
665
672
 
666
673
  Release notes live in [CHANGELOG.md](./CHANGELOG.md).
674
+
675
+ `session-end --summary "What was completed" --files src/example.ts` saves a
676
+ session checkpoint to the hosted journal and prints a local receipt path.
677
+ Hooks can pass the summary through `--summary-stdin` and use `--session-id` for
678
+ the host task identity. Without a summary or files, the checkpoint is explicitly
679
+ skipped. A failed write keeps the checkpoint and session id; retry the printed
680
+ receipt with `session-end --retry <receipt.json>`. `session status` shows the last
681
+ checkpoint status. Receipts live in `.snipara/companion/session-closeouts/` and
682
+ contain a bounded, redacted summary; they are local artifacts, not source files.
683
+ A journal entry id confirms persistence; automation event delivery is reported
684
+ separately. A timeout can leave server acceptance uncertain, so a retry after an
685
+ unconfirmed response may create a second journal entry. New Codex hook bundles
686
+ forward the final assistant summary; older hooks need to be refreshed to do so.
687
+ This checkpoint preserves session context; it does not generate product docs.
688
+
667
689
  When project auth is configured, `workflow phase-commit`, `final-commit`, and
668
690
  `team-sync handoff` also run reviewed Why Capture. The Companion first sends a
669
691
  read-only preview and confirms only when the server detects durable rationale.
package/dist/index.d.ts CHANGED
@@ -48,6 +48,12 @@ declare function saveConfig(config: Partial<RLMConfig>, options?: ConfigResoluti
48
48
  */
49
49
  declare function getConfigPath(options?: ConfigResolutionOptions): string;
50
50
 
51
+ interface SessionCheckpoint {
52
+ sessionId: string;
53
+ summary: string;
54
+ files: string[];
55
+ }
56
+
51
57
  interface ContextQueryResult {
52
58
  sections: Array<{
53
59
  title: string;
@@ -320,6 +326,9 @@ interface SessionPersistResult {
320
326
  success: boolean;
321
327
  session_id: string;
322
328
  files_tracked: number;
329
+ status: "saved" | "skipped";
330
+ entry_id?: string;
331
+ date?: string;
323
332
  }
324
333
  type WhyCaptureSourceKind = "commit" | "phase_commit" | "final_commit" | "handoff";
325
334
  interface WhyCaptureInput {
@@ -379,6 +388,7 @@ interface EndOfTaskCommitWhyInput {
379
388
  }
380
389
  interface JournalAppendResult {
381
390
  success?: boolean;
391
+ entry_id?: string;
382
392
  date?: string;
383
393
  message?: string;
384
394
  }
@@ -1185,9 +1195,10 @@ declare class RLMClient {
1185
1195
  */
1186
1196
  trackFiles(files: string[]): Promise<TrackFileResult>;
1187
1197
  /**
1188
- * Persist session context using snipara_remember
1198
+ * Persist an explicit bounded checkpoint to the hosted journal. An event
1199
+ * acknowledgement is not a persistence receipt.
1189
1200
  */
1190
- persistSession(): Promise<SessionPersistResult>;
1201
+ persistSession(input?: Partial<SessionCheckpoint>): Promise<SessionPersistResult>;
1191
1202
  /**
1192
1203
  * Recall memories with optional lifecycle warnings.
1193
1204
  */