snipara-companion 3.2.22 → 3.2.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 +759 -0
- package/README.md +6 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +60 -7
- package/docs/FULL_REFERENCE.md +7 -2
- package/package.json +3 -2
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,759 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
Release notes for `snipara-companion`, newest first.
|
|
4
|
+
|
|
5
|
+
## New In 3.2.23
|
|
6
|
+
|
|
7
|
+
- Preserves the canonical project profile and the authenticated owner operating
|
|
8
|
+
profile at the front of session bootstrap briefs, even when those durable
|
|
9
|
+
profiles are older than ordinary carryover.
|
|
10
|
+
- Keeps profile selection bounded by the requested entry and token budgets,
|
|
11
|
+
then ranks recent carryover and relevant decisions into the remaining space.
|
|
12
|
+
|
|
13
|
+
## New In 3.2.22
|
|
14
|
+
|
|
15
|
+
- Clarifies Snipara Sandbox manual install guidance to use
|
|
16
|
+
`python -m pip install "snipara-sandbox[all]"`, where `[all]` is the pip
|
|
17
|
+
extra on the package spec, not a separate argument.
|
|
18
|
+
|
|
19
|
+
## New In 3.2.19
|
|
20
|
+
|
|
21
|
+
- Adds `snipara-companion workflow sync-policy-ledger`, which uploads local
|
|
22
|
+
Project Policy Decision Requests, resolution receipts, apply receipts, and
|
|
23
|
+
policy drafts into the hosted Project Policy ledger for audit visibility.
|
|
24
|
+
- Keeps hosted sync observational: synced receipts are stored as bounded JSON
|
|
25
|
+
documents and do not approve, refuse, activate, or edit canonical Project
|
|
26
|
+
Policy automatically.
|
|
27
|
+
|
|
28
|
+
## New In 3.2.17
|
|
29
|
+
|
|
30
|
+
- Adds `snipara-companion workflow policy-ledger`, a local Project Policy
|
|
31
|
+
decision ledger that summarizes pending, approved, refused, modified, and
|
|
32
|
+
deferred policy artifacts for the LLM agent.
|
|
33
|
+
- Includes agent-facing prompts for pending Project Policy decisions while
|
|
34
|
+
keeping approval explicit through `workflow decide`; the ledger never applies
|
|
35
|
+
policy changes automatically.
|
|
36
|
+
|
|
37
|
+
## New In 3.2.16
|
|
38
|
+
|
|
39
|
+
- Adds an `operationalLoop` section to `snipara-companion status --json` and
|
|
40
|
+
text status output. It composes local workflow state, Team Sync handoff
|
|
41
|
+
attention, pending Decision Requests, and receipt gaps into concrete next
|
|
42
|
+
actions.
|
|
43
|
+
- Keeps the loop advisory and agent-first: it points agents toward
|
|
44
|
+
`workflow decisions`, `workflow decide`, `phase-commit`, and
|
|
45
|
+
`outcome-capture preview --emit-outcome-receipt` without editing Project
|
|
46
|
+
Policy, approving memory, or bypassing verification.
|
|
47
|
+
|
|
48
|
+
## New In 3.2.15
|
|
49
|
+
|
|
50
|
+
- Adds `snipara-companion run --emit-policy-decisions` so Project Policy
|
|
51
|
+
`require_review` and `block` verdicts can become local Decision Requests in
|
|
52
|
+
the agent workflow.
|
|
53
|
+
- Keeps Project Policy administration review-only: resolving the request records
|
|
54
|
+
the human choice, while policy edits, stale marking, exceptions, or memory
|
|
55
|
+
invalidation still require explicit follow-up action.
|
|
56
|
+
|
|
57
|
+
## New In 3.2.12
|
|
58
|
+
|
|
59
|
+
- Adds `snipara-companion workers execute` as the Controlled Worker Execution
|
|
60
|
+
V0 receipt path. It defaults to dry-run, writes
|
|
61
|
+
`snipara.controlled_worker_execution.receipt.v0` JSON, and records bounded
|
|
62
|
+
task, worker, write-scope, acceptance, proof, approval, command, and
|
|
63
|
+
execution evidence.
|
|
64
|
+
- Keeps execution fail-closed: `--execute` requires an explicit approval
|
|
65
|
+
receipt, high-risk commands are blocked locally, and successful commands move
|
|
66
|
+
to `verification_required` instead of being treated as reviewed work.
|
|
67
|
+
- Documents hosted Outcome Intelligence receipt ingestion as a project API
|
|
68
|
+
surface while keeping aggregation advisory, reviewable, and task-profile
|
|
69
|
+
scoped.
|
|
70
|
+
|
|
71
|
+
## New In 3.2.11
|
|
72
|
+
|
|
73
|
+
- Adds Outcome Intelligence V0 receipt emission to
|
|
74
|
+
`outcome-capture preview --emit-outcome-receipt`, producing a typed
|
|
75
|
+
`snipara.outcome_intelligence.receipt.v0` artifact from review, test, deploy,
|
|
76
|
+
guard, and workflow events.
|
|
77
|
+
- Adds `snipara-companion run --outcome-receipts <files...>` so production
|
|
78
|
+
judgment runs can ingest local receipt JSON and print reason-code/task-profile
|
|
79
|
+
calibration buckets.
|
|
80
|
+
- Keeps Outcome Intelligence advisory and sample-gated: receipts are
|
|
81
|
+
calibration evidence, not causal proof, global agent trust, or a Project
|
|
82
|
+
Policy override.
|
|
83
|
+
|
|
84
|
+
## New In 3.2.9
|
|
85
|
+
|
|
86
|
+
- Deduplicates near-identical `session-bootstrap` text brief entries by content
|
|
87
|
+
similarity, so workflow final commits and their checkpoint echoes do not both
|
|
88
|
+
consume pushed-brief slots.
|
|
89
|
+
- Reserves brief capacity for relevant decision entries when available, while
|
|
90
|
+
filtering checkpoint-like `DECISION` records that do not match the brief's
|
|
91
|
+
active topic.
|
|
92
|
+
- Makes `session-bootstrap --include-session-context` a silent no-op in
|
|
93
|
+
unconfigured projects, preserving the hook contract that an empty brief emits
|
|
94
|
+
no header or decorative output.
|
|
95
|
+
|
|
96
|
+
## New In 3.2.8
|
|
97
|
+
|
|
98
|
+
- Ranks `session-bootstrap --include-session-context` text briefs by recent
|
|
99
|
+
carryover, authority, and release/deploy signal before older durable memory,
|
|
100
|
+
so high-signal handoffs surface ahead of stale trivia.
|
|
101
|
+
- Enforces the pushed brief budget at selection time, caps the default text
|
|
102
|
+
brief to four entries, and keeps full hosted diagnostics available through
|
|
103
|
+
`--json` instead of truncating noisy output after the fact.
|
|
104
|
+
- Filters stale/low-confidence/test bootstrap entries when fresh candidates are
|
|
105
|
+
available, including legacy repo-path and old memory-injection references.
|
|
106
|
+
|
|
107
|
+
## New In 3.2.7
|
|
108
|
+
|
|
109
|
+
- Makes `workflow run --mode lite` a true zero-cost local path with no mandatory
|
|
110
|
+
hosted recall, context query, or bootstrap calls.
|
|
111
|
+
- Lets `workflow run --mode auto` route small diffs to LITE, rationale/source
|
|
112
|
+
questions to STANDARD, and release/deploy/architecture work to FULL or
|
|
113
|
+
ORCHESTRATED.
|
|
114
|
+
- Changes `session-bootstrap` text output into a compact pushed brief that is
|
|
115
|
+
silent when no high-signal memory or carryover item is available.
|
|
116
|
+
- Updates Companion and agent-facing docs to treat recall, context query, code
|
|
117
|
+
impact, and end-of-task memory as on-demand escalations instead of entry
|
|
118
|
+
ceremony.
|
|
119
|
+
|
|
120
|
+
## New In 3.2.5
|
|
121
|
+
|
|
122
|
+
- Updates `doctor` guidance for the lean hosted MCP agent surface: a compact
|
|
123
|
+
Snipara tool set is expected, `snipara_help(query=...)` is the routed guidance
|
|
124
|
+
path, and `snipara_help(list_all=true)` is for inspecting specialist opt-in
|
|
125
|
+
surfaces.
|
|
126
|
+
|
|
127
|
+
## New In 3.2.4
|
|
128
|
+
|
|
129
|
+
- Renders the selected human choice into `manual_apply_required` apply hints
|
|
130
|
+
emitted by `workflow decide`, so memory review decisions no longer leave the
|
|
131
|
+
literal `<human-choice>` placeholder in follow-up commands.
|
|
132
|
+
- Documents Worker Registry local commands in the package README, including
|
|
133
|
+
`workers local probe`, `add`, `list`, `status --json`, and `remove`.
|
|
134
|
+
- Adds `snipara-companion workers local list`, `workers local remove`, and
|
|
135
|
+
`workers local probe` for persisted worker profiles and easier registry
|
|
136
|
+
maintenance.
|
|
137
|
+
- Moves local worker declarations from a single `.snipara/workers/local.json`
|
|
138
|
+
payload to per-worker profile files under `.snipara/workers/<worker-id>.json`
|
|
139
|
+
with a shared `index.json` for the default worker id.
|
|
140
|
+
- Documents that tracked worker profiles are durable team-visible project state
|
|
141
|
+
shared by worktrees through Git, and that secrets must be referenced through
|
|
142
|
+
environment variables instead of committed in registry files.
|
|
143
|
+
- Adds CLI transport support for explicit OpenAI-compatible declarations as
|
|
144
|
+
well as declared CLI workers.
|
|
145
|
+
- Adds automatic migration from legacy `workers/local.json` into per-worker
|
|
146
|
+
profile files and keeps compatibility for existing `workflow run` routing flows.
|
|
147
|
+
|
|
148
|
+
## New In 3.2.3
|
|
149
|
+
|
|
150
|
+
- Promotes Intent Detection V0 from a snapshot stub to an advisory session
|
|
151
|
+
intelligence contract with weighted signals, reason codes, evidence counts,
|
|
152
|
+
and suggested workflow mode hints.
|
|
153
|
+
- Shows detected intent, confidence, advisory suggested mode, and signals in
|
|
154
|
+
`workflow session`, `workflow resume --include-session-context`, and Project
|
|
155
|
+
Intelligence briefs.
|
|
156
|
+
- Keeps all Intent Detection V0 output fail-closed: `hardRoutingAllowed=false`,
|
|
157
|
+
no worker spawning, no merges, no canonical memory writes, and no blocking
|
|
158
|
+
gates from intent alone.
|
|
159
|
+
|
|
160
|
+
## New In 3.2.2
|
|
161
|
+
|
|
162
|
+
- Adds Activity Timeline V0 under `.snipara/activity/timeline.jsonl` and a fast
|
|
163
|
+
Session Snapshot V0 at `.snipara/activity/session.json` for local workflow,
|
|
164
|
+
Team Sync, Producer Loop, and Decision Request visibility.
|
|
165
|
+
- Adds `workflow timeline` and `workflow session` so agents can inspect the
|
|
166
|
+
append-only local activity log and session snapshot directly.
|
|
167
|
+
- Adds `workflow timeline --export md` for redacted publishable timeline
|
|
168
|
+
artifacts, includes local Session Snapshot summaries in `workflow resume` and
|
|
169
|
+
Project Intelligence briefs, and attaches advisory-only Intent Detection V0
|
|
170
|
+
to the snapshot with `hardRoutingAllowed=false`.
|
|
171
|
+
- Emits review-only policy suggestion decision requests when repeated resolved
|
|
172
|
+
receipts show the same human choice and rationale; suggestions remain manual
|
|
173
|
+
apply only and are never auto-applied.
|
|
174
|
+
- Keeps Session Snapshot routing fail-closed with `hardRoutingAllowed=false`.
|
|
175
|
+
|
|
176
|
+
## New In 3.2.1
|
|
177
|
+
|
|
178
|
+
- Hardens Companion and orchestrator handoff interop. `lead-plan --json` now
|
|
179
|
+
writes a default JSON artifact under `.snipara/lead-plans/` and returns the
|
|
180
|
+
next `snipara-orchestrator team-sync gate` command.
|
|
181
|
+
- Preserves comma-containing `--acceptance` criteria as one criterion across
|
|
182
|
+
lead-plan, agent-readiness, and adapter handoff flows.
|
|
183
|
+
- Makes `workflow decision-producer memory` inherit hosted `memory reviews`
|
|
184
|
+
evidence when available and rejects internal review item types as human
|
|
185
|
+
actions.
|
|
186
|
+
- Makes recurring policy suggestions group by producer kind, human choice, and
|
|
187
|
+
target category instead of exact note text, fixes inherited memory decision
|
|
188
|
+
apply hints to use the selected action, and reports emitted request ids from
|
|
189
|
+
`memory reviews --emit-decisions`.
|
|
190
|
+
- Improves `doctor` orchestrator diagnostics with path/source/version mismatch
|
|
191
|
+
detail, and gives local worker routing cards an actionable worker declaration
|
|
192
|
+
hint.
|
|
193
|
+
|
|
194
|
+
## New In 3.2.0
|
|
195
|
+
|
|
196
|
+
- Adds `memory reviews`, a read-only connector for hosted human-review memory
|
|
197
|
+
surfaces. It reads `snipara_memory_review_queue`,
|
|
198
|
+
`snipara_memory_clean_candidates`, and
|
|
199
|
+
`snipara_memory_duplicate_candidates`, then summarizes reviewable memories
|
|
200
|
+
into agent-ready items.
|
|
201
|
+
- Adds `memory reviews --emit-decisions` to write local Decision Request V0
|
|
202
|
+
artifacts with readable memory evidence items. It does not mutate hosted
|
|
203
|
+
memory; requests still require explicit `workflow decide` resolution and use
|
|
204
|
+
the existing hosted/manual apply paths.
|
|
205
|
+
|
|
206
|
+
## New In 3.1.1
|
|
207
|
+
|
|
208
|
+
- Improves Decision Request triage UX: batched Producer Loop requests now embed
|
|
209
|
+
readable evidence items with workflow, phase, summary, status, file hints, and
|
|
210
|
+
artifact path metadata, so a human can decide without manually opening every
|
|
211
|
+
opaque artifact id first.
|
|
212
|
+
- Ignores local `.snipara/decisions/` receipts in Git by default.
|
|
213
|
+
|
|
214
|
+
## New In 3.1.0
|
|
215
|
+
|
|
216
|
+
- Adds Decision Request V0 local review routing under `.snipara/decisions/`.
|
|
217
|
+
`workflow decisions` lists pending questions for an LLM client to ask the
|
|
218
|
+
human, and `workflow decide` records a `decision_response` receipt with the
|
|
219
|
+
explicit reviewer choice.
|
|
220
|
+
- Adds `workflow producer-triage` for unreviewed Producer Loop samples. Triage
|
|
221
|
+
emits a batched decision request and never marks samples reviewed by itself;
|
|
222
|
+
`workflow decide --choose accept_all|reject_all` applies the existing
|
|
223
|
+
`producer-review` path and records the applied actions.
|
|
224
|
+
- Adds decision-request producers for `outcome-capture preview --emit-decisions`,
|
|
225
|
+
hosted memory review actions, and stale context risks. These requests declare
|
|
226
|
+
the existing apply path and do not gain any new canonical memory write
|
|
227
|
+
capability.
|
|
228
|
+
|
|
229
|
+
## New In 3.0.14
|
|
230
|
+
|
|
231
|
+
- Adds `workflow producer-review` to mark local Producer Loop samples as
|
|
232
|
+
reviewed or rejected with reviewer, outcome, and note metadata.
|
|
233
|
+
- Updates `workflow producer-report` so calibration status depends on reviewed
|
|
234
|
+
samples, with separate reviewed, rejected, and unreviewed counts plus outcome
|
|
235
|
+
counts. `hardGateReady` remains false in V0.
|
|
236
|
+
|
|
237
|
+
## New In 3.0.13
|
|
238
|
+
|
|
239
|
+
- Extends Producer Loop V0 reporting beyond the initial workflow producer:
|
|
240
|
+
`workflow producer-report` now accepts PR Answer Pack decision-capture
|
|
241
|
+
artifacts with producer kind `pr_answer_pack_decision_capture`.
|
|
242
|
+
- Keeps multi-producer calibration advisory-only. PR Answer Pack samples remain
|
|
243
|
+
review-pending evidence and do not approve durable memory, launch workers, or
|
|
244
|
+
become server-side compliance attestation.
|
|
245
|
+
|
|
246
|
+
## New In 3.0.12
|
|
247
|
+
|
|
248
|
+
- Makes `workflow phase-commit` and `workflow final-commit` emit local Producer
|
|
249
|
+
Loop V0 artifacts under `.snipara/producer-loop/`, backed by the redacted
|
|
250
|
+
Coding Intelligence Ledger builder.
|
|
251
|
+
- Adds `workflow producer-report` to summarize local Producer Loop adoption,
|
|
252
|
+
producer kinds, workflow ids, latest artifact, reason-code counts, invalid
|
|
253
|
+
artifacts, sample size, and calibration caveats before any hard gate.
|
|
254
|
+
- Keeps the boundary explicit: Producer Loop artifacts are local review
|
|
255
|
+
evidence only. They do not launch workers, approve Project Brain memory, or
|
|
256
|
+
provide server-side compliance attestation.
|
|
257
|
+
|
|
258
|
+
## New In 3.0.11
|
|
259
|
+
|
|
260
|
+
- Updates generated agent workflow guidance so FULL-mode audits use
|
|
261
|
+
`snipara_plan`, `snipara_decompose`, and `snipara_multi_query` deliberately
|
|
262
|
+
while simple one-shot lookups stay on targeted context queries.
|
|
263
|
+
|
|
264
|
+
## New In 3.0.10
|
|
265
|
+
|
|
266
|
+
- Hardens Intent Ledger extraction in `reality-check` so source-backed intent
|
|
267
|
+
uses structured fields or explicit labeled sections before falling back to
|
|
268
|
+
legacy prose.
|
|
269
|
+
- Stops inferring anti-goals and rejected alternatives from generic free-text
|
|
270
|
+
words; those fields now require `Anti-goals:` / `Rejected alternatives:` or
|
|
271
|
+
structured contract input.
|
|
272
|
+
- Makes the Intent Ledger freshness horizon configurable through contract
|
|
273
|
+
policy instead of relying on an implementation-local constant.
|
|
274
|
+
|
|
275
|
+
## New In 3.0.9
|
|
276
|
+
|
|
277
|
+
- Fixes Unknown Registry IDs in `reality-check` so unknowns use the stable
|
|
278
|
+
`unknown:` prefix instead of accidentally keeping a `reality:` finding prefix.
|
|
279
|
+
- Splits the shared Project Intelligence contracts into dedicated Reality
|
|
280
|
+
Check, Intent Ledger, Unknown Registry, engineering lead, and shared-helper
|
|
281
|
+
modules while preserving the public barrel exports used by Companion and PR
|
|
282
|
+
Answer Packs.
|
|
283
|
+
- Hardens Intent Ledger extraction internals with named status/phrase extractor
|
|
284
|
+
rules and a contract-level freshness horizon constant.
|
|
285
|
+
|
|
286
|
+
## New In 3.0.8
|
|
287
|
+
|
|
288
|
+
- Adds Intent Ledger V1 to `reality-check` output so local CLI and PR Answer
|
|
289
|
+
Packs can show source-backed repository intent coverage, confidence, and
|
|
290
|
+
stale or review-pending assumptions.
|
|
291
|
+
- Adds Unknown Registry V1 to surface missing intent, missing verification,
|
|
292
|
+
stale intent, architecture drift, dirty local evidence, and heuristic
|
|
293
|
+
calibration gaps as explicit project unknowns.
|
|
294
|
+
- Hardens PR Answer Pack release readiness with named scoring weights,
|
|
295
|
+
structured blocking detection, and bounded related-document content filters.
|
|
296
|
+
- Clarifies that `reality-check --enforce` is a strict opt-in gate for
|
|
297
|
+
calibrated hooks because V1 heuristics remain advisory-grade.
|
|
298
|
+
|
|
299
|
+
## New In 3.0.7
|
|
300
|
+
|
|
301
|
+
- Adds `snipara-companion reality-check` plus the
|
|
302
|
+
`snipara-companion intelligence reality-check` alias for local
|
|
303
|
+
contradiction-to-reality checks over Git-derived or supplied changed files.
|
|
304
|
+
- Adds `--enforce` so local hooks or CI adapters can fail on
|
|
305
|
+
review-required/blocking Project Reality Check findings.
|
|
306
|
+
|
|
307
|
+
## New In 3.0.6
|
|
308
|
+
|
|
309
|
+
- Adds `snipara-companion intelligence ledger-export`, a local structured
|
|
310
|
+
Coding Intelligence Ledger JSON export with schema versioning, bounded
|
|
311
|
+
sections, confidence/calibration metadata, and redaction for secret-like
|
|
312
|
+
content plus local repo paths.
|
|
313
|
+
- Documents the ledger export in the full Companion reference so packaged docs
|
|
314
|
+
and the installed CLI stay aligned.
|
|
315
|
+
|
|
316
|
+
## New In 3.0.5
|
|
317
|
+
|
|
318
|
+
- Normalizes workflow closure with Team Sync: completed workflows now close
|
|
319
|
+
active Team Sync work when the workflow goal is slug-like but the files and
|
|
320
|
+
meaningful tokens still match the active work item.
|
|
321
|
+
|
|
322
|
+
## New In 3.0.4
|
|
323
|
+
|
|
324
|
+
- Adds compact memory audit summaries with auto-compact status, candidate
|
|
325
|
+
counts, and follow-up commands for safe cleanup.
|
|
326
|
+
- Adds Team Sync hygiene actions to stale-work summaries so dry-run archive,
|
|
327
|
+
completion, and handoff paths are visible without deleting data.
|
|
328
|
+
- Fixes Python toolchain inference in `verify` and detects
|
|
329
|
+
`snipara-orchestrator` installed inside common project virtualenvs.
|
|
330
|
+
|
|
331
|
+
## New In 3.0.3
|
|
332
|
+
|
|
333
|
+
- Adds `snipara-companion workers local add|status` so a project can declare a
|
|
334
|
+
local OpenAI-compatible worker such as LM Studio once and reuse it from
|
|
335
|
+
workflow runs.
|
|
336
|
+
- Lets `workflow run --routing-local-worker <id>` load the declared worker,
|
|
337
|
+
prefer local endpoints, pin the local model, and hand the resolved runtime
|
|
338
|
+
metadata to `snipara-orchestrator`.
|
|
339
|
+
- Makes project-policy rejection explicit when local worker routing is
|
|
340
|
+
requested but the effective Adaptive Work Routing policy does not allow local
|
|
341
|
+
endpoints.
|
|
342
|
+
- Clarifies Team Sync stale-work and `team-sync sweep --dry-run` output so
|
|
343
|
+
candidates, actual archive count, and remaining stale work are visible before
|
|
344
|
+
cleanup.
|
|
345
|
+
|
|
346
|
+
## New In 3.0.2
|
|
347
|
+
|
|
348
|
+
- Adds adapter-neutral `proofVerification` status to Engineering Lead execution
|
|
349
|
+
receipts so provided proof evidence is not treated as verified until a source
|
|
350
|
+
validation is recorded.
|
|
351
|
+
- Fails imported closed receipts back to verification-required when proof is
|
|
352
|
+
present but unverified.
|
|
353
|
+
- Limits ADE Adapter Pack V1 generation to first-party Codex and Claude Code
|
|
354
|
+
packs while Cursor, Orca, Windsurf, and custom packs remain planned.
|
|
355
|
+
|
|
356
|
+
## New In 3.0.1
|
|
357
|
+
|
|
358
|
+
- Hardens local source activation validation so invalid numeric options fail
|
|
359
|
+
visibly instead of silently falling back to defaults.
|
|
360
|
+
- Keeps local source snapshots deterministic and structurally validated before
|
|
361
|
+
refreshes are used for code overlays.
|
|
362
|
+
- Removes the placeholder `DEC-002` memory decision from orchestrator handoffs
|
|
363
|
+
and emits only workflow/context-derived decision IDs.
|
|
364
|
+
|
|
365
|
+
## New In 3.0.0
|
|
366
|
+
|
|
367
|
+
- Adds `snipara-companion source init|snapshot|status|sync|watch`, the local
|
|
368
|
+
source activation path for folders with or without Git metadata.
|
|
369
|
+
- Builds deterministic `.snipara/source/latest.json` snapshots, supported
|
|
370
|
+
document sync dry-runs, and refreshed local code overlays before any hosted
|
|
371
|
+
provider approval.
|
|
372
|
+
- Makes non-Git folders first-class for local code overlays, including
|
|
373
|
+
filesystem scanning, local-only overlay warnings, and stable dirty tree hashes.
|
|
374
|
+
- Repositions local source activation as the default free/no-provider first
|
|
375
|
+
value path, while keeping hosted provider sync as the canonical shared CODE
|
|
376
|
+
graph path.
|
|
377
|
+
|
|
378
|
+
## New In 2.3.1
|
|
379
|
+
|
|
380
|
+
- Hardens local Adaptive Work Routing handoffs so Companion preserves
|
|
381
|
+
`workerProfiles` and resolver `scoreBreakdown` metadata from local
|
|
382
|
+
orchestrator catalogs.
|
|
383
|
+
- Infers preferred local worker strengths and structured-output requirements
|
|
384
|
+
from the workflow task before routing.
|
|
385
|
+
- Asks the local orchestrator to compare all discovered local models when local
|
|
386
|
+
worker routing is requested and no explicit model is pinned.
|
|
387
|
+
|
|
388
|
+
## New In 2.3.0
|
|
389
|
+
|
|
390
|
+
- Adds Engineering Lead Execution Receipts V1 to `lead-plan` output. Local and
|
|
391
|
+
imported plans now carry expected handoff, claim, approval, proof, outcome,
|
|
392
|
+
and Project Brain update receipt gates while keeping `workersSpawned: 0`.
|
|
393
|
+
- Normalizes imported `executionReceipts` from Project Health or Companion
|
|
394
|
+
exports. Unknown future receipt statuses or stages fail closed and emit
|
|
395
|
+
`companion_dropped_unknown_execution_receipt_*` reason codes.
|
|
396
|
+
- Adds receipt-aware reconciliation and Markdown output so missing receipt
|
|
397
|
+
requirements are visible before any worker handoff.
|
|
398
|
+
|
|
399
|
+
## New In 2.2.0
|
|
400
|
+
|
|
401
|
+
- Extends `snipara-companion lead-plan` to Engineering Lead Contract V1 with
|
|
402
|
+
`contractVersion`, supervised `workPackages`, and a `supervision` summary for
|
|
403
|
+
review/replan status, receipt requirements, and replan triggers.
|
|
404
|
+
- Adds `--from-plan <file>` and `--reconcile` so Companion can compare an
|
|
405
|
+
imported Project Health or Companion lead plan against current local workflow,
|
|
406
|
+
Team Sync, proof, acceptance, and file-scope signals. Stale scope and missing
|
|
407
|
+
continuity fail closed into visible `companion_reconcile_*` reason codes.
|
|
408
|
+
- Keeps imported enum drift observable for the new work-package and supervision
|
|
409
|
+
fields through `companion_dropped_unknown_*` reason codes.
|
|
410
|
+
|
|
411
|
+
## New In 2.1.1
|
|
412
|
+
|
|
413
|
+
- Makes `lead-plan --from-cockpit` enum drift observable: unknown future
|
|
414
|
+
cockpit posture, status, worker role, worker status, or routing mode values
|
|
415
|
+
still fail closed, but now emit `companion_dropped_unknown_*` reason codes in
|
|
416
|
+
the imported summary and affected worker recommendation.
|
|
417
|
+
|
|
418
|
+
## New In 2.1.0
|
|
419
|
+
|
|
420
|
+
- Adds `snipara-companion lead-plan`, a local Companion Engineering Lead Plan
|
|
421
|
+
artifact that turns workflow state, Team Sync, file scope, context refs, proof
|
|
422
|
+
gates, and acceptance criteria into fail-closed worker recommendations.
|
|
423
|
+
- Supports `--from-cockpit <file>` so a Project Health cockpit JSON export can
|
|
424
|
+
be normalized into the same CLI Markdown/JSON lead-plan report.
|
|
425
|
+
- Keeps the boundary explicit: `lead-plan` recommends contracts and handoffs,
|
|
426
|
+
records `workersSpawned: 0`, uses `main_agent` fallback, and does not launch
|
|
427
|
+
autonomous workers.
|
|
428
|
+
|
|
429
|
+
## New In 2.0.10
|
|
430
|
+
|
|
431
|
+
- Adds `snipara-companion agent-readiness audit`, a local readiness report that
|
|
432
|
+
scores bounded agent delegation across scope, context, workflow continuity,
|
|
433
|
+
Team Sync, proof gates, verification path, and target posture.
|
|
434
|
+
- Adds optional ADE Adapter Pack V1 output to `snipara-companion handoff` through
|
|
435
|
+
`--adapter-pack --target <codex|claude-code|cursor|orca|windsurf|custom>`,
|
|
436
|
+
including context refs, proof gates, acceptance criteria, conflict posture,
|
|
437
|
+
receipt expectations, and a portable prompt for the receiving agent.
|
|
438
|
+
- Documents the Agent Readiness Audit and ADE Adapter Pack as service/product
|
|
439
|
+
surfaces without claiming native IDE control or automatic worker execution.
|
|
440
|
+
|
|
441
|
+
## New In 2.0.9
|
|
442
|
+
|
|
443
|
+
- Aligns public package metadata with the local-first `impact` first-run
|
|
444
|
+
positioning.
|
|
445
|
+
- Adds README badges and community support/security/PR surfaces for the public
|
|
446
|
+
repository.
|
|
447
|
+
- Keeps GitHub issue-template labels aligned with the repo labels used for
|
|
448
|
+
launch feedback.
|
|
449
|
+
|
|
450
|
+
## New In 2.0.8
|
|
451
|
+
|
|
452
|
+
- Keeps secret-like source files visible to local `impact` by redacting matching
|
|
453
|
+
lines before graph extraction instead of excluding the whole file.
|
|
454
|
+
- Improves missing-target warnings so `--max-files` is suggested only when the
|
|
455
|
+
local overlay actually hit the file cap.
|
|
456
|
+
- Adds launch assets, demo scripts, post drafts, and issue templates for
|
|
457
|
+
impact feedback, docs feedback, and contribution proposals.
|
|
458
|
+
|
|
459
|
+
## New In 2.0.7
|
|
460
|
+
|
|
461
|
+
- Adds Project Policy / Decision Consistency V0 contracts to Project
|
|
462
|
+
Intelligence, including deterministic `allow`, `warn`, `require_review`, and
|
|
463
|
+
`block` verdicts with receipts.
|
|
464
|
+
- Surfaces conservative Project Policy decisions in `snipara-companion
|
|
465
|
+
intelligence brief` when approved resume-context decisions match the task or
|
|
466
|
+
changed files, and folds those receipts into `snipara-companion run` policy
|
|
467
|
+
gates.
|
|
468
|
+
- Reframes the package README around the account-free local `impact` first run,
|
|
469
|
+
with the full reference moved to `docs/FULL_REFERENCE.md`.
|
|
470
|
+
- Makes `impact` available as a top-level command and keeps code graph `auto`
|
|
471
|
+
source local by default, so no account or network call is required unless
|
|
472
|
+
`--source hosted` is explicitly requested.
|
|
473
|
+
- Renders local `impact` output as a human-readable Incoming/Outgoing
|
|
474
|
+
blast-radius by default, while preserving `--json` for the full overlay
|
|
475
|
+
payload.
|
|
476
|
+
|
|
477
|
+
## New In 2.0.6
|
|
478
|
+
|
|
479
|
+
- Hardens `snipara-companion run` first-party Advisor Influence receipt capture
|
|
480
|
+
with stable skip reasons, total/eligible/recorded/skipped counts, bounded
|
|
481
|
+
write limits, per-recommendation skipped writes, and receipt automation
|
|
482
|
+
metadata.
|
|
483
|
+
- Backfills observed run verification evidence into advisor receipts through
|
|
484
|
+
`verificationExecuted` and bounded metadata for collaboration guard,
|
|
485
|
+
package-surface review, and policy-gate results. This records verification
|
|
486
|
+
evidence without claiming outcome proof.
|
|
487
|
+
- Keeps receipt writes tied to visible plan adaptation: recommendations that do
|
|
488
|
+
not change the agent plan are explicitly skipped instead of silently recorded.
|
|
489
|
+
|
|
490
|
+
## New In 2.0.4
|
|
491
|
+
|
|
492
|
+
- Adds Project Intelligence policy gates to `snipara-companion run --release`,
|
|
493
|
+
including advisory, required-action, and block decisions for release, schema,
|
|
494
|
+
auth, billing, deploy, and package surfaces.
|
|
495
|
+
- Shows guard and Judgment Card policy blocks as explicit release blockers so
|
|
496
|
+
agents cannot silently continue when strong project evidence requires a stop.
|
|
497
|
+
|
|
498
|
+
## New In 2.0.3
|
|
499
|
+
|
|
500
|
+
- Adds first-party Advisor Influence receipt capture to
|
|
501
|
+
`snipara-companion run` with `--served-judgment-id`, so Project Advisor
|
|
502
|
+
recommendations can record visible plan adaptation through the hosted
|
|
503
|
+
Project Intelligence receipt API.
|
|
504
|
+
- Adds `--skip-advisor-receipts` for runs that need to keep the receipt write
|
|
505
|
+
path disabled while still producing the Project Intelligence judgment output.
|
|
506
|
+
|
|
507
|
+
## New In 2.0.2
|
|
508
|
+
|
|
509
|
+
- Passes Adaptive Work Routing daily and monthly project budgets into hosted
|
|
510
|
+
model requirements so the gateway can enforce budget caps against receipt
|
|
511
|
+
history.
|
|
512
|
+
- Records Local Context Pack token economy fields on metadata-only receipts:
|
|
513
|
+
baseline, packed, retrieved, and saved tokens. Retrieve receipts count the
|
|
514
|
+
retrieved local payload against savings so they do not overstate reduction.
|
|
515
|
+
|
|
516
|
+
## New In 2.0.1
|
|
517
|
+
|
|
518
|
+
- Adds `snipara-companion context-pack pack|retrieve|stats|clean` as a
|
|
519
|
+
no-account local Context Pack. It stores reversible tool outputs, logs, diffs,
|
|
520
|
+
and notes under `.snipara/context-pack` with content-hash IDs and no raw
|
|
521
|
+
hosted upload, local `.gitignore` protection, restrictive file permissions,
|
|
522
|
+
and default blocking for secret-like input unless `--allow-sensitive` is set.
|
|
523
|
+
- Adds metadata-only Local Context Pack receipts to canonical event payloads,
|
|
524
|
+
`post-tool --pack-result`, and `workflow runtime-checkpoint --context-pack` so
|
|
525
|
+
workflows can reference exact local artifacts without uploading their content.
|
|
526
|
+
|
|
527
|
+
## New In 2.0.0
|
|
528
|
+
|
|
529
|
+
- Adds project-level Adaptive Work Routing policy consumption to `workflow run`.
|
|
530
|
+
Companion now reads Project > Automation settings, applies endpoint and worker
|
|
531
|
+
class bounds, and only calls the hosted catalog when the project policy allows
|
|
532
|
+
catalog mode.
|
|
533
|
+
- Makes hosted Adaptive Work Routing catalog success explicit: missing
|
|
534
|
+
`success: true` is treated as fail-closed and falls back to the main agent
|
|
535
|
+
instead of optimistic success.
|
|
536
|
+
- Carries `catalogLimit` in provider-neutral model requirements so future
|
|
537
|
+
selection policy can tune catalog breadth without hardcoding the gateway call.
|
|
538
|
+
- Supports open-package local-only routing through
|
|
539
|
+
`.snipara/adaptive-routing.json`, so recommendation cards and handoff metadata
|
|
540
|
+
can be generated without Snipara SaaS, hosted context, or hosted catalog
|
|
541
|
+
calls.
|
|
542
|
+
- Documents the major routing milestone: strong planner reasoning can stay with
|
|
543
|
+
the main agent while scoped execution is routed to cloud, local, or
|
|
544
|
+
self-hosted workers through project policy and sanitized catalogs.
|
|
545
|
+
|
|
546
|
+
## New In 1.4.20
|
|
547
|
+
|
|
548
|
+
- Treats `workflow run --mode full --max-tokens` as a workflow budget split
|
|
549
|
+
across durable bootstrap, optional session context, context query, shared
|
|
550
|
+
context, and hosted planning.
|
|
551
|
+
- Adds `session_bootstrap_quality` and `plan_quality.warnings` diagnostics so
|
|
552
|
+
agents can catch stale/test memories and weak generated-plan file hints before
|
|
553
|
+
editing.
|
|
554
|
+
- Makes `workflow resume` short-lived session context truly opt-in with
|
|
555
|
+
`--include-session-context` or explicit `--max-context-tokens`.
|
|
556
|
+
- Adds `doctor` companion version-skew reporting for stale global installs
|
|
557
|
+
versus the workspace package or npm latest.
|
|
558
|
+
|
|
559
|
+
## New In 1.4.18
|
|
560
|
+
|
|
561
|
+
- Removes autonomous htask bootstrap/claim ergonomics from `snipara-companion`;
|
|
562
|
+
those workflow commands now belong to `snipara-orchestrator`.
|
|
563
|
+
- Keeps the companion `htask` and `swarm` commands as explicit legacy hosted
|
|
564
|
+
passthroughs that require stable IDs.
|
|
565
|
+
|
|
566
|
+
## New In 1.4.16
|
|
567
|
+
|
|
568
|
+
- Clarifies that hosted htask and swarm coordination belong to the
|
|
569
|
+
`snipara-orchestrator` workflow surface.
|
|
570
|
+
- Keeps direct `snipara-companion htask` and `snipara-companion swarm` commands
|
|
571
|
+
framed as legacy passthroughs instead of the primary task-routing path.
|
|
572
|
+
|
|
573
|
+
## New In 1.4.15
|
|
574
|
+
|
|
575
|
+
- Refines `snipara-companion run --release` Judgment Card behavior so completed
|
|
576
|
+
package reviews no longer remain required actions, and explicitly skipped
|
|
577
|
+
package reviews are shown as advisories instead of required work.
|
|
578
|
+
- Stops suggesting the npm package review command when the review already passed
|
|
579
|
+
or was intentionally skipped.
|
|
580
|
+
|
|
581
|
+
## New In 1.4.14
|
|
582
|
+
|
|
583
|
+
- Adds a production Project Intelligence Judgment Card to `intelligence brief`
|
|
584
|
+
and `verify`, with weighted readiness, evidence, and required-action output.
|
|
585
|
+
- Adds `snipara-companion run` as the agent-facing production entrypoint that
|
|
586
|
+
composes resume context, memory health, code impact, release guard findings,
|
|
587
|
+
package review, verification hints, and the final Judgment Card.
|
|
588
|
+
- Adds actionable collaboration guard cards so review-only findings, blocking
|
|
589
|
+
conflicts, tests, handoffs, and package-surface checks are classified directly
|
|
590
|
+
in guard JSON and human output.
|
|
591
|
+
|
|
592
|
+
## New In 1.4.13
|
|
593
|
+
|
|
594
|
+
- Adds `snipara-companion memory invalidate <memory-id>` and
|
|
595
|
+
`snipara-companion memory supersede <old-memory-id> <new-memory-id>` so agents
|
|
596
|
+
can apply Memory V2 lifecycle corrections through companion when a recalled
|
|
597
|
+
memory is obsolete or replaced.
|
|
598
|
+
- Keeps lifecycle mutation outside read-only hygiene commands: `memory compact`
|
|
599
|
+
remains dry-run only, while invalidate/supersede require explicit memory IDs.
|
|
600
|
+
|
|
601
|
+
## New In 1.4.5
|
|
602
|
+
|
|
603
|
+
- `workflow phase-commit` and `workflow final-commit` now complete matching
|
|
604
|
+
local Team Sync work items when the workflow outcome is completed.
|
|
605
|
+
- Matching stays conservative: workflow-goal text wins, and file/token fallback
|
|
606
|
+
is only used when no workflow goal is available, so deploy or promotion
|
|
607
|
+
threads are not closed from implementation evidence alone.
|
|
608
|
+
- Text output now reports completed Team Sync work when workflow commits clean up
|
|
609
|
+
local active items.
|
|
610
|
+
|
|
611
|
+
## New In 1.4.4
|
|
612
|
+
|
|
613
|
+
- Adds `snipara-companion memory local -- <args...>` as a thin bridge to the
|
|
614
|
+
open `snipara-memory` engine for no-account local memory workflows.
|
|
615
|
+
- Adds `snipara-companion eval export` to write a `snipara-evals` case from
|
|
616
|
+
local workflow, Team Sync, file, command, and expected-signal inputs.
|
|
617
|
+
- Adds `snipara-companion eval run` to execute `snipara-evals` through `npx` or a
|
|
618
|
+
configured local runner.
|
|
619
|
+
- Clarifies the open Mini Snipara stack boundary: local continuity and evals are
|
|
620
|
+
open, while team-wide presence, shared locks, GitHub checks, dashboards, and
|
|
621
|
+
Cloud code graph remain hosted Snipara capabilities.
|
|
622
|
+
|
|
623
|
+
## New In 1.4.8
|
|
624
|
+
|
|
625
|
+
- Adds `snipara-companion collaboration guard --ack-review-only` so enforced
|
|
626
|
+
release guards can acknowledge review-only stale-state and
|
|
627
|
+
decision-consistency warnings without requiring
|
|
628
|
+
`SNIPARA_COLLABORATION_GUARD=0`. The hosted `REVIEW_REQUIRED` verdict stays
|
|
629
|
+
visible in the guard payload; `BLOCKED`, `REQUIRES_ACK`, active-session
|
|
630
|
+
conflicts and blocking leases still fail.
|
|
631
|
+
- Updates the Infomaniak deploy guard to use the review-only ack path for
|
|
632
|
+
release UX false positives while keeping the emergency env bypass reserved for
|
|
633
|
+
true guard outages.
|
|
634
|
+
|
|
635
|
+
## New In 1.4.2
|
|
636
|
+
|
|
637
|
+
- Adds `snipara-companion collaboration start|watch|claim|guard|release|status`
|
|
638
|
+
for safe parallel coding presence, auto-claims, advisory/exclusive resource
|
|
639
|
+
claims, hosted guard checks, and conflict alarms across humans and agents.
|
|
640
|
+
- Adds `snipara-companion collaboration hooks install` plus guard profiles for
|
|
641
|
+
blocking pre-commit, pre-push, pre-deploy, schema/migration, and package
|
|
642
|
+
release checks.
|
|
643
|
+
- Adds `snipara-companion collaboration ide-status` for editor extensions and
|
|
644
|
+
local companion UIs that need compact live collaboration state.
|
|
645
|
+
- Hardens local code impact so stale or incomplete local overlay caches report
|
|
646
|
+
missing target files instead of silently returning an empty impact set.
|
|
647
|
+
- Adds `snipara-companion workflow impact-gate` for committed local workflow
|
|
648
|
+
phases that are ahead of upstream but not pushed yet. It compares
|
|
649
|
+
`upstream..HEAD`, separates dirty working-tree files, runs local code-overlay
|
|
650
|
+
impact on the committed code files, and maps the result back to completed
|
|
651
|
+
workflow phases.
|
|
652
|
+
|
|
653
|
+
## New In 1.4.1
|
|
654
|
+
|
|
655
|
+
- Makes local code overlay Git hooks background by default so `git commit` and
|
|
656
|
+
`git push` return quickly while Snipara refreshes local overlay state and
|
|
657
|
+
push-time promotion asynchronously.
|
|
658
|
+
- Adds `snipara-companion code hooks install --synchronous` for teams that
|
|
659
|
+
intentionally want foreground hook work, plus a configurable background
|
|
660
|
+
reindex delay for pre-push promotion.
|
|
661
|
+
|
|
662
|
+
## New In 1.3.7
|
|
663
|
+
|
|
664
|
+
- Hardens `memory-guard check` with `--confirmed-by-user "<confirmation>"`
|
|
665
|
+
for explicit, auditable overrides after the user has reviewed destructive or
|
|
666
|
+
contradictory signals.
|
|
667
|
+
- Adds stable guard exit codes in strict mode: `20` for confirmation required,
|
|
668
|
+
`21` for unavailable memory/context guidance, and `22` for invalid guard
|
|
669
|
+
options.
|
|
670
|
+
- Validates destructive checks before hosted calls so vague commands such as
|
|
671
|
+
`--destructive` without `--intent` or `--command` fail fast.
|
|
672
|
+
- Extends `snipara-companion init --with-hooks` so it also installs local code
|
|
673
|
+
overlay Git hooks (`post-commit` sync and `pre-push` promotion/reindex).
|
|
674
|
+
|
|
675
|
+
## New In 1.3.6
|
|
676
|
+
|
|
677
|
+
- Adds `snipara-companion memory audit` for a read-only memory hygiene pass that
|
|
678
|
+
combines hosted memory health, cleanup candidates, and compaction dry-run.
|
|
679
|
+
- Adds `memory health`, `memory clean-candidates`, and `memory compact` as
|
|
680
|
+
direct companion maintenance commands. `memory compact` always sends
|
|
681
|
+
`dry_run=true` and does not mutate memory.
|
|
682
|
+
- Extends `memory-guard check` with `--intent`, `--destructive`, and
|
|
683
|
+
`--require-confirmation` so agents can surface memory/context contradictions
|
|
684
|
+
and ask the user before irreversible actions.
|
|
685
|
+
|
|
686
|
+
## New In 1.3.0
|
|
687
|
+
|
|
688
|
+
- Adds top-level Git-style agent work commands: `status`, `brief`, `timeline`,
|
|
689
|
+
`verify`, `handoff`, and `workflow resume`.
|
|
690
|
+
- Adds `snipara-companion verify` for transparent verification plans based on
|
|
691
|
+
companion code impact auto-source selection plus local package scripts.
|
|
692
|
+
- Reframes companion as the day-two continuity surface after
|
|
693
|
+
`npx create-snipara` installs the project.
|
|
694
|
+
|
|
695
|
+
## New In 1.2.0
|
|
696
|
+
|
|
697
|
+
- Adds `snipara-companion intelligence brief` for a local Project Intelligence brief that composes hosted resume context, memory health, and code impact into one agent-ready output.
|
|
698
|
+
- Adds `workflow scaffold --preset project-intelligence-continuity-layer` for the full memory + code graph + workflow continuity roadmap.
|
|
699
|
+
- Updates generated agent workflow instructions so new work can call the Project Intelligence brief before risky changes and scaffold the roadmap preset for multi-phase delivery.
|
|
700
|
+
|
|
701
|
+
## New In 1.1.15
|
|
702
|
+
|
|
703
|
+
- Expands `init --client` to Claude Code, Cursor, Windsurf, Codex, Gemini, Mistral, ChatGPT, VS Code, Continue, and custom MCP clients.
|
|
704
|
+
- Keeps Claude Code, Cursor, and Windsurf as hook-capable presets while treating Mistral, ChatGPT, VS Code, Continue, and custom clients as MCP-first setup presets.
|
|
705
|
+
- Prints Codex TOML or HTTP MCP references for MCP-first clients instead of generating unsupported legacy hooks.
|
|
706
|
+
|
|
707
|
+
## New In 1.1.14
|
|
708
|
+
|
|
709
|
+
- Adds `npx -y snipara-companion@latest automations install/status/diff/update` for installing dashboard-generated automation hook bundles locally.
|
|
710
|
+
- `init --with-hooks` now delegates hook installation to the hosted automation config bundle so Claude Code, Cursor, and Windsurf use the same templates as Project Automation.
|
|
711
|
+
- Managed automation files are tracked in `.snipara/automations/manifest.json` and are not overwritten after local edits unless `--force` is used.
|
|
712
|
+
- Automation REST calls now use `www.snipara.com` while MCP calls stay on `api.snipara.com`, avoiding FastAPI IP rate limits on Stuck Guard and generated hook installs.
|
|
713
|
+
|
|
714
|
+
## New In 1.1.13
|
|
715
|
+
|
|
716
|
+
- Adds `snipara-companion stuck-guard status/check/simulate` for hosted Memory Guard / Stuck Guard decisions.
|
|
717
|
+
- `pre-tool` now emits canonical `tool_call` events and prints Rescue Packs when hosted Stuck Guard returns `inject` or `enforce`.
|
|
718
|
+
- `post-tool` now emits canonical `tool_result` events with status, exit code, command, classification, and a redacted/truncated preview.
|
|
719
|
+
|
|
720
|
+
## New In 1.1.12
|
|
721
|
+
|
|
722
|
+
- Documents the GitHub PR Answer Packs boundary: use `create-snipara --github`
|
|
723
|
+
for the hosted GitHub App setup, and use `snipara-companion` only for local
|
|
724
|
+
planning, code impact checks, workflow state, and memory commits.
|
|
725
|
+
|
|
726
|
+
## New In 1.1.10
|
|
727
|
+
|
|
728
|
+
- Snipara Sandbox guidance now points existing projects to `npx create-snipara repair --with-runtime`
|
|
729
|
+
- Managed workflow phases marked `needs_runtime` suggest Snipara Sandbox installation only when needed
|
|
730
|
+
|
|
731
|
+
## New In 1.1.4
|
|
732
|
+
|
|
733
|
+
- `snipara-companion onboard-folder` previews and applies dashboardless business-folder imports from local or LLM-materialized sources
|
|
734
|
+
- `snipara-companion workflow start/status/resume/phase-start/phase-commit` keeps a visible LLM plan in `.snipara/workflow/current.json` and persists each phase through hosted memory so compacted agents can resume safely
|
|
735
|
+
- `snipara-companion final-commit` persists the final workflow outcome with `snipara_end_of_task_commit`
|
|
736
|
+
- `snipara-companion code symbol-card` and `snipara-companion code impact` expose paid Context safeguards directly from the companion CLI
|
|
737
|
+
|
|
738
|
+
## New In 1.1.2
|
|
739
|
+
|
|
740
|
+
- `snipara-companion doctor` and Snipara Sandbox hints detect provider keys from local `.env` files without printing secret values
|
|
741
|
+
|
|
742
|
+
## New In 1.1.1
|
|
743
|
+
|
|
744
|
+
- `snipara-companion doctor` diagnoses Snipara auth, Snipara Sandbox, Snipara Sandbox MCP, provider keys, and Docker
|
|
745
|
+
- `workflow run` prints contextual Snipara Sandbox hints for full/orchestrated/execution-heavy work
|
|
746
|
+
- `workflow run --no-runtime-hint` hides Snipara Sandbox guidance for scripted terminal output
|
|
747
|
+
|
|
748
|
+
## New In 1.1.0
|
|
749
|
+
|
|
750
|
+
- `business-collections` commands for Team Business Context presets and reusable business docs
|
|
751
|
+
- `client-projects` commands for creating and listing project-scoped client context workspaces
|
|
752
|
+
- `upload --metadata/--metadata-file` plus convenience metadata flags for single-file business/client uploads
|
|
753
|
+
|
|
754
|
+
## New In 1.0.0
|
|
755
|
+
|
|
756
|
+
- direct `snipara-companion code` access for `callers`, `imports`, `neighbors`, and `shortest-path`
|
|
757
|
+
- `workflow run --mode lite|standard|full|orchestrate` for hosted-first workflow routing; `auto` remains a STANDARD compatibility alias
|
|
758
|
+
- `snipara-companion shared-context` for project-linked standards and team guidance
|
|
759
|
+
- automatic fallback to project token auth when a stale `SNIPARA_API_KEY` overrides a valid local login
|
package/README.md
CHANGED
|
@@ -39,6 +39,12 @@ workflow phase state, Team Sync handoff summary, passive source snapshot status,
|
|
|
39
39
|
session snapshot summary, stable local artifact paths, and recommended next
|
|
40
40
|
actions.
|
|
41
41
|
|
|
42
|
+
Session bootstrap treats two explicit profiles as durable operating context:
|
|
43
|
+
the project profile is selected first, followed by the authenticated owner
|
|
44
|
+
profile. These profiles reserve bounded space ahead of ordinary decisions and
|
|
45
|
+
carryover; Companion does not infer a psychological profile from conversation
|
|
46
|
+
history.
|
|
47
|
+
|
|
42
48
|
Use this after `create-snipara` activation. `create-snipara` remains the
|
|
43
49
|
canonical engine for first workspace setup; Companion owns the repeatable local
|
|
44
50
|
continuity loop after that.
|
package/dist/index.d.ts
CHANGED
|
@@ -486,9 +486,16 @@ interface SessionMemoryTier {
|
|
|
486
486
|
count: number;
|
|
487
487
|
tokens: number;
|
|
488
488
|
}
|
|
489
|
+
interface SessionMemoryProfiles extends Record<string, unknown> {
|
|
490
|
+
project_memory_id?: string | null;
|
|
491
|
+
owner_memory_id?: string | null;
|
|
492
|
+
tokens?: number;
|
|
493
|
+
precedence?: string[];
|
|
494
|
+
}
|
|
489
495
|
interface SessionMemoriesResult extends Record<string, unknown> {
|
|
490
496
|
critical: SessionMemoryTier;
|
|
491
497
|
daily: SessionMemoryTier;
|
|
498
|
+
profiles?: SessionMemoryProfiles;
|
|
492
499
|
total_tokens?: number;
|
|
493
500
|
message?: string;
|
|
494
501
|
}
|
package/dist/index.js
CHANGED
|
@@ -583,15 +583,29 @@ function normalizeSessionMemoryTier(value) {
|
|
|
583
583
|
tokens: typeof value.tokens === "number" ? value.tokens : 0
|
|
584
584
|
};
|
|
585
585
|
}
|
|
586
|
+
function normalizeSessionMemoryProfiles(value) {
|
|
587
|
+
if (!isRecord(value)) {
|
|
588
|
+
return void 0;
|
|
589
|
+
}
|
|
590
|
+
return {
|
|
591
|
+
...value,
|
|
592
|
+
project_memory_id: typeof value.project_memory_id === "string" ? value.project_memory_id : null,
|
|
593
|
+
owner_memory_id: typeof value.owner_memory_id === "string" ? value.owner_memory_id : null,
|
|
594
|
+
tokens: typeof value.tokens === "number" ? value.tokens : void 0,
|
|
595
|
+
precedence: Array.isArray(value.precedence) ? value.precedence.filter((entry) => typeof entry === "string") : void 0
|
|
596
|
+
};
|
|
597
|
+
}
|
|
586
598
|
function normalizeSessionMemoriesResult(value) {
|
|
587
599
|
const record = isRecord(value) ? value : {};
|
|
588
600
|
const critical = normalizeSessionMemoryTier(record.critical);
|
|
589
601
|
const daily = normalizeSessionMemoryTier(record.daily);
|
|
602
|
+
const profiles = normalizeSessionMemoryProfiles(record.profiles);
|
|
590
603
|
const derivedTotalTokens = critical.tokens + daily.tokens;
|
|
591
604
|
return {
|
|
592
605
|
...record,
|
|
593
606
|
critical,
|
|
594
607
|
daily,
|
|
608
|
+
profiles,
|
|
595
609
|
total_tokens: typeof record.total_tokens === "number" ? record.total_tokens : derivedTotalTokens || void 0,
|
|
596
610
|
message: typeof record.message === "string" ? record.message : void 0
|
|
597
611
|
};
|
|
@@ -19206,6 +19220,8 @@ var DEFAULT_SHARED_CONTEXT_TOKENS = 2e3;
|
|
|
19206
19220
|
var DEFAULT_WORKFLOW_RUN_TOKENS = 8e3;
|
|
19207
19221
|
var MIN_WORKFLOW_SURFACE_TOKENS = 200;
|
|
19208
19222
|
var STALE_BOOTSTRAP_MEMORY_DAYS = 90;
|
|
19223
|
+
var PROJECT_PROFILE_CATEGORY = "tenant_profile";
|
|
19224
|
+
var OWNER_OPERATING_PROFILE_CATEGORY = "owner_operating_profile";
|
|
19209
19225
|
var TASK_COMMIT_TIMEOUT_MS = 3e4;
|
|
19210
19226
|
var FINAL_COMMIT_TIMEOUT_MS = 9e4;
|
|
19211
19227
|
var COMPANION_CONTINUITY_CONTRACT_VERSION = "snipara.companion.continuity.v1";
|
|
@@ -19809,10 +19825,19 @@ function isSessionCarryoverEntry(entry) {
|
|
|
19809
19825
|
const text = readBootstrapEntryText(entry).toLowerCase();
|
|
19810
19826
|
return category.includes("team_sync_handoff") || category.includes("journal:") || category.includes("workflow-phase") || text.includes("checkpoint: workflow:final-commit") || text.includes("final commit") || text.includes("phase-commit") || text.includes("handoff");
|
|
19811
19827
|
}
|
|
19828
|
+
function isOwnerOperatingProfileEntry(entry) {
|
|
19829
|
+
return typeof entry.category === "string" && entry.category.toLowerCase() === OWNER_OPERATING_PROFILE_CATEGORY;
|
|
19830
|
+
}
|
|
19831
|
+
function isProjectProfileEntry(entry) {
|
|
19832
|
+
return typeof entry.category === "string" && entry.category.toLowerCase() === PROJECT_PROFILE_CATEGORY;
|
|
19833
|
+
}
|
|
19834
|
+
function isPinnedBootstrapProfileEntry(entry) {
|
|
19835
|
+
return isProjectProfileEntry(entry) || isOwnerOperatingProfileEntry(entry);
|
|
19836
|
+
}
|
|
19812
19837
|
function isLikelyStaleBootstrapEntry(entry, now) {
|
|
19813
19838
|
const age = entryAgeDays(entry, now);
|
|
19814
19839
|
const text = readBootstrapEntryText(entry).toLowerCase();
|
|
19815
|
-
return typeof age === "number" && age > STALE_BOOTSTRAP_MEMORY_DAYS || typeof entry.confidence === "number" && entry.confidence < 0.5 || text.includes("/users/alopez/devs/snipara/.env") || text.includes("rlm_remember") || text.includes("rlm_recall") || text.includes("railway") || text.includes("vercel") || text.includes("memory injection feature is complete") || text.includes("infotooltip component created") || text.includes("mcp performance optimizations (jan 2026)");
|
|
19840
|
+
return typeof age === "number" && age > STALE_BOOTSTRAP_MEMORY_DAYS && !isPinnedBootstrapProfileEntry(entry) || typeof entry.confidence === "number" && entry.confidence < 0.5 || text.includes("/users/alopez/devs/snipara/.env") || text.includes("rlm_remember") || text.includes("rlm_recall") || text.includes("railway") || text.includes("vercel") || text.includes("memory injection feature is complete") || text.includes("infotooltip component created") || text.includes("mcp performance optimizations (jan 2026)");
|
|
19816
19841
|
}
|
|
19817
19842
|
function scoreBootstrapBriefEntry(entry, source2, now) {
|
|
19818
19843
|
let score = source2 === "daily" ? 100 : 0;
|
|
@@ -19968,27 +19993,55 @@ function buildSessionBootstrapBrief(result, options) {
|
|
|
19968
19993
|
...normalized.critical.memories.map((entry) => ({ entry, source: "critical" })),
|
|
19969
19994
|
...options.includeSessionContext ? normalized.daily.memories.map((entry) => ({ entry, source: "daily" })) : []
|
|
19970
19995
|
];
|
|
19996
|
+
const projectProfile = candidates.find(
|
|
19997
|
+
(candidate) => normalized.profiles?.project_memory_id && readBootstrapEntryId(candidate.entry) === normalized.profiles.project_memory_id || isProjectProfileEntry(candidate.entry)
|
|
19998
|
+
)?.entry;
|
|
19999
|
+
const ownerProfile = candidates.find(
|
|
20000
|
+
(candidate) => normalized.profiles?.owner_memory_id && readBootstrapEntryId(candidate.entry) === normalized.profiles.owner_memory_id || isOwnerOperatingProfileEntry(candidate.entry)
|
|
20001
|
+
)?.entry;
|
|
20002
|
+
const pinnedProfiles = [projectProfile, ownerProfile].filter(
|
|
20003
|
+
(entry) => Boolean(entry)
|
|
20004
|
+
);
|
|
19971
20005
|
const seen = /* @__PURE__ */ new Set();
|
|
19972
|
-
const
|
|
20006
|
+
const entries = [];
|
|
20007
|
+
let estimatedTokens = 0;
|
|
20008
|
+
for (const profile of pinnedProfiles) {
|
|
20009
|
+
const profileTokens = estimateBootstrapEntryTokens(profile);
|
|
20010
|
+
const profileId = readBootstrapEntryId(profile);
|
|
20011
|
+
const profileText = readBootstrapEntryText(profile).slice(0, 140).toLowerCase();
|
|
20012
|
+
const key = profileId || profileText;
|
|
20013
|
+
if (entries.length < maxEntries && !seen.has(key) && estimatedTokens + profileTokens <= budgetTokens) {
|
|
20014
|
+
seen.add(key);
|
|
20015
|
+
entries.push(profile);
|
|
20016
|
+
estimatedTokens += profileTokens;
|
|
20017
|
+
}
|
|
20018
|
+
}
|
|
20019
|
+
const reservedEntryCount = entries.length;
|
|
20020
|
+
const remainingEntrySlots = maxEntries - reservedEntryCount;
|
|
20021
|
+
const selectedProjectProfileId = projectProfile ? readBootstrapEntryId(projectProfile) : void 0;
|
|
20022
|
+
const ranked = candidates.filter(
|
|
20023
|
+
(candidate) => !isOwnerOperatingProfileEntry(candidate.entry) && candidate.entry !== projectProfile && !(selectedProjectProfileId && readBootstrapEntryId(candidate.entry) === selectedProjectProfileId)
|
|
20024
|
+
).map((candidate, index) => ({
|
|
19973
20025
|
...candidate,
|
|
19974
20026
|
index,
|
|
19975
20027
|
score: scoreBootstrapBriefEntry(candidate.entry, candidate.source, now)
|
|
19976
20028
|
})).sort((a, b) => b.score - a.score || b.index - a.index);
|
|
19977
20029
|
const hasFreshCandidate = ranked.some(
|
|
19978
20030
|
(candidate) => candidate.score > 0 && !isLikelyStaleBootstrapEntry(candidate.entry, now) && !isLikelyTestMemory(candidate.entry)
|
|
19979
|
-
);
|
|
20031
|
+
) || reservedEntryCount > 0;
|
|
19980
20032
|
const topicTokens = buildBootstrapTopicTokens(ranked);
|
|
19981
20033
|
const hasCarryoverCandidate = ranked.some(
|
|
19982
20034
|
(candidate) => candidate.score > 0 && isSessionCarryoverEntry(candidate.entry) && !isLikelyStaleBootstrapEntry(candidate.entry, now) && !isLikelyTestMemory(candidate.entry)
|
|
19983
20035
|
);
|
|
19984
|
-
const hasFreshDecisionCandidate = maxEntries >= 4 && ranked.some(
|
|
20036
|
+
const hasFreshDecisionCandidate = maxEntries >= 4 && remainingEntrySlots > 0 && ranked.some(
|
|
19985
20037
|
(candidate) => candidate.score > 0 && isDecisionRelevantToBootstrap(candidate.entry, topicTokens, hasCarryoverCandidate) && !isLikelyStaleBootstrapEntry(candidate.entry, now) && !isLikelyTestMemory(candidate.entry)
|
|
19986
20038
|
);
|
|
19987
|
-
const entries = [];
|
|
19988
|
-
let estimatedTokens = 0;
|
|
19989
20039
|
let selectedCarryoverCount = 0;
|
|
19990
20040
|
let selectedDecisionCount = 0;
|
|
19991
20041
|
for (const candidate of ranked) {
|
|
20042
|
+
if (entries.length >= maxEntries) {
|
|
20043
|
+
break;
|
|
20044
|
+
}
|
|
19992
20045
|
if (hasFreshCandidate && (isLikelyStaleBootstrapEntry(candidate.entry, now) || isLikelyTestMemory(candidate.entry))) {
|
|
19993
20046
|
continue;
|
|
19994
20047
|
}
|
|
@@ -20006,7 +20059,7 @@ function buildSessionBootstrapBrief(result, options) {
|
|
|
20006
20059
|
if (isDecision && !isDecisionRelevantToBootstrap(candidate.entry, topicTokens, hasCarryoverCandidate)) {
|
|
20007
20060
|
continue;
|
|
20008
20061
|
}
|
|
20009
|
-
if (hasFreshDecisionCandidate && selectedDecisionCount === 0 && isCarryover && selectedCarryoverCount >=
|
|
20062
|
+
if (hasFreshDecisionCandidate && selectedDecisionCount === 0 && isCarryover && selectedCarryoverCount >= Math.max(0, remainingEntrySlots - 1)) {
|
|
20010
20063
|
continue;
|
|
20011
20064
|
}
|
|
20012
20065
|
const entryTokens = estimateBootstrapEntryTokens(candidate.entry);
|
package/docs/FULL_REFERENCE.md
CHANGED
|
@@ -203,7 +203,7 @@ snipara-companion
|
|
|
203
203
|
|
|
204
204
|
## Changelog
|
|
205
205
|
|
|
206
|
-
Release notes have moved to [CHANGELOG.md](
|
|
206
|
+
Release notes have moved to [CHANGELOG.md](../CHANGELOG.md).
|
|
207
207
|
|
|
208
208
|
## Agentic Work Commands
|
|
209
209
|
|
|
@@ -1022,6 +1022,11 @@ Short-lived session context is skipped unless you pass `--include-session-contex
|
|
|
1022
1022
|
or an explicit `--max-context-tokens`. Text output is a compact bootstrap brief
|
|
1023
1023
|
and is silent when no high-signal item is available; use `--json` for the full
|
|
1024
1024
|
payload.
|
|
1025
|
+
The brief reserves bounded space for the newest project/client profile and then
|
|
1026
|
+
the authenticated owner operating profile before ranking decisions and recent
|
|
1027
|
+
carryover. Additional project/client profiles remain eligible critical context.
|
|
1028
|
+
The owner profile is explicit and reviewable; Companion does not infer it from
|
|
1029
|
+
conversation history.
|
|
1025
1030
|
`workflow run --mode full --json` also reports `workflow_budget`,
|
|
1026
1031
|
`session_bootstrap_quality`, and `plan_quality.warnings` so agents can detect
|
|
1027
1032
|
oversized bootstrap context or weak generated-plan file hints before editing.
|
|
@@ -1337,7 +1342,7 @@ Semantics:
|
|
|
1337
1342
|
- `snipara-companion reindex` = trigger or poll hosted `snipara_reindex`; use after uploads when immediate chunk availability matters
|
|
1338
1343
|
- `snipara-companion code *` = direct access to the code graph tools without routing through `snipara_context_query`
|
|
1339
1344
|
- `snipara-companion recall` = direct durable memory lookup for decisions, learnings, preferences, and carryover
|
|
1340
|
-
- `snipara-companion session-bootstrap` = pushed compact brief
|
|
1345
|
+
- `snipara-companion session-bootstrap` = pushed compact brief ordered as newest project/client profile, explicit owner profile, decisions, other durable memory, then optional weak session carryover; empty brief is silent in text mode
|
|
1341
1346
|
- `snipara-companion task-commit` = durable task/phase/workflow outcomes only, not a mechanical mirror of every Git commit
|
|
1342
1347
|
- `snipara-companion memory-guard check` = deterministic guard recall/context before retries, commits, or finalization when a command failed or a publishable package surface is touched
|
|
1343
1348
|
- `snipara-companion memory-guard check --intent "<action>" --destructive --strict` = contradiction check before irreversible actions; blocks until the user explicitly confirms when memory/context disagrees or the action is destructive
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "snipara-companion",
|
|
3
|
-
"version": "3.2.
|
|
3
|
+
"version": "3.2.23",
|
|
4
4
|
"description": "Local-first CLI that asks your repo what breaks before an AI coding agent edits it.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -71,6 +71,7 @@
|
|
|
71
71
|
},
|
|
72
72
|
"files": [
|
|
73
73
|
"dist",
|
|
74
|
-
"docs"
|
|
74
|
+
"docs",
|
|
75
|
+
"CHANGELOG.md"
|
|
75
76
|
]
|
|
76
77
|
}
|