@jigyasudham/veto 2.9.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 +83 -4
- package/dist/cli/statusline.d.ts +9 -0
- package/dist/cli/statusline.d.ts.map +1 -1
- package/dist/cli/statusline.js +59 -3
- package/dist/cli/statusline.js.map +1 -1
- package/dist/cli.js +166 -5
- package/dist/cli.js.map +1 -1
- package/dist/memory/config.d.ts +10 -0
- package/dist/memory/config.d.ts.map +1 -1
- package/dist/memory/config.js +48 -8
- package/dist/memory/config.js.map +1 -1
- package/dist/memory/local.d.ts.map +1 -1
- package/dist/memory/local.js +32 -10
- package/dist/memory/local.js.map +1 -1
- package/dist/server/handlers/core.d.ts.map +1 -1
- package/dist/server/handlers/core.js +14 -1
- package/dist/server/handlers/core.js.map +1 -1
- package/dist/server/handlers/session.d.ts.map +1 -1
- package/dist/server/handlers/session.js +51 -2
- package/dist/server/handlers/session.js.map +1 -1
- package/dist/tools/definitions.d.ts +23 -3
- package/dist/tools/definitions.d.ts.map +1 -1
- package/dist/tools/definitions.js +11 -3
- package/dist/tools/definitions.js.map +1 -1
- package/dist/transcripts/adapters/claude.d.ts +27 -0
- package/dist/transcripts/adapters/claude.d.ts.map +1 -0
- package/dist/transcripts/adapters/claude.js +194 -0
- package/dist/transcripts/adapters/claude.js.map +1 -0
- package/dist/transcripts/archive.d.ts +23 -0
- package/dist/transcripts/archive.d.ts.map +1 -0
- package/dist/transcripts/archive.js +101 -0
- package/dist/transcripts/archive.js.map +1 -0
- package/dist/transcripts/cache.d.ts +66 -0
- package/dist/transcripts/cache.d.ts.map +1 -0
- package/dist/transcripts/cache.js +0 -0
- package/dist/transcripts/cache.js.map +1 -0
- package/dist/transcripts/chunk.d.ts +26 -0
- package/dist/transcripts/chunk.d.ts.map +1 -0
- package/dist/transcripts/chunk.js +54 -0
- package/dist/transcripts/chunk.js.map +1 -0
- package/dist/transcripts/config.d.ts +52 -0
- package/dist/transcripts/config.d.ts.map +1 -0
- package/dist/transcripts/config.js +135 -0
- package/dist/transcripts/config.js.map +1 -0
- package/dist/transcripts/embed.d.ts +58 -0
- package/dist/transcripts/embed.d.ts.map +1 -0
- package/dist/transcripts/embed.js +303 -0
- package/dist/transcripts/embed.js.map +1 -0
- package/dist/transcripts/expand.d.ts +20 -0
- package/dist/transcripts/expand.d.ts.map +1 -0
- package/dist/transcripts/expand.js +97 -0
- package/dist/transcripts/expand.js.map +1 -0
- package/dist/transcripts/ingest.d.ts +17 -0
- package/dist/transcripts/ingest.d.ts.map +1 -0
- package/dist/transcripts/ingest.js +120 -0
- package/dist/transcripts/ingest.js.map +1 -0
- package/dist/transcripts/manage.d.ts +42 -0
- package/dist/transcripts/manage.d.ts.map +1 -0
- package/dist/transcripts/manage.js +123 -0
- package/dist/transcripts/manage.js.map +1 -0
- package/dist/transcripts/mapping.d.ts +23 -0
- package/dist/transcripts/mapping.d.ts.map +1 -0
- package/dist/transcripts/mapping.js +42 -0
- package/dist/transcripts/mapping.js.map +1 -0
- package/dist/transcripts/mask.d.ts +26 -0
- package/dist/transcripts/mask.d.ts.map +1 -0
- package/dist/transcripts/mask.js +121 -0
- package/dist/transcripts/mask.js.map +1 -0
- package/dist/transcripts/on-save.d.ts +12 -0
- package/dist/transcripts/on-save.d.ts.map +1 -0
- package/dist/transcripts/on-save.js +37 -0
- package/dist/transcripts/on-save.js.map +1 -0
- package/dist/transcripts/pyramid.d.ts +38 -0
- package/dist/transcripts/pyramid.d.ts.map +1 -0
- package/dist/transcripts/pyramid.js +113 -0
- package/dist/transcripts/pyramid.js.map +1 -0
- package/dist/transcripts/recall.d.ts +46 -0
- package/dist/transcripts/recall.d.ts.map +1 -0
- package/dist/transcripts/recall.js +107 -0
- package/dist/transcripts/recall.js.map +1 -0
- package/dist/transcripts/schema.d.ts +79 -0
- package/dist/transcripts/schema.d.ts.map +1 -0
- package/dist/transcripts/schema.js +178 -0
- package/dist/transcripts/schema.js.map +1 -0
- package/dist/transcripts/search.d.ts +57 -0
- package/dist/transcripts/search.d.ts.map +1 -0
- package/dist/transcripts/search.js +332 -0
- package/dist/transcripts/search.js.map +1 -0
- package/dist/transcripts/store.d.ts +21 -0
- package/dist/transcripts/store.d.ts.map +1 -0
- package/dist/transcripts/store.js +105 -0
- package/dist/transcripts/store.js.map +1 -0
- package/dist/transcripts/toc.d.ts +18 -0
- package/dist/transcripts/toc.d.ts.map +1 -0
- package/dist/transcripts/toc.js +96 -0
- package/dist/transcripts/toc.js.map +1 -0
- package/dist/transcripts/tokenize.d.ts +14 -0
- package/dist/transcripts/tokenize.d.ts.map +1 -0
- package/dist/transcripts/tokenize.js +70 -0
- package/dist/transcripts/tokenize.js.map +1 -0
- package/dist/transcripts/vectors.d.ts +40 -0
- package/dist/transcripts/vectors.d.ts.map +1 -0
- package/dist/transcripts/vectors.js +203 -0
- package/dist/transcripts/vectors.js.map +1 -0
- package/package.json +3 -2
- package/server.json +2 -2
package/README.md
CHANGED
|
@@ -76,7 +76,7 @@ The 7-agent **Council** is LLM-first — its value is the multi-agent debate —
|
|
|
76
76
|
|
|
77
77
|
---
|
|
78
78
|
|
|
79
|
-
## MCP Tools (
|
|
79
|
+
## MCP Tools (93)
|
|
80
80
|
|
|
81
81
|
| Category | Tools |
|
|
82
82
|
|---|---|
|
|
@@ -90,7 +90,7 @@ The 7-agent **Council** is LLM-first — its value is the multi-agent debate —
|
|
|
90
90
|
| **Quality** | `veto_clone_detector` · `veto_lint_rules` · `veto_api_contract` · `veto_a11y_advisor` · `veto_type_coverage` · `veto_test_gaps` |
|
|
91
91
|
| **Advisors** | `veto_dep_advisor` · `veto_dep_verify` · `veto_query_advisor` · `veto_bundle_advisor` · `veto_dead_code` · `veto_hitl_checkpoint` · `veto_drift_check` |
|
|
92
92
|
| **Watching** | `veto_watch` · `veto_watch_poll` · `veto_watch_stop` |
|
|
93
|
-
| **Memory** | `veto_memory_store` · `veto_memory_search` · `veto_memory_delete` · `veto_project_map_update` · `veto_project_map_get` · `veto_pattern_store` · `veto_patterns_list` · `veto_memory_export` · `veto_memory_import` |
|
|
93
|
+
| **Memory** | `veto_memory_store` · `veto_memory_search` · `veto_memory_delete` · `veto_decisions` · `veto_project_map_update` · `veto_project_map_get` · `veto_pattern_store` · `veto_patterns_list` · `veto_memory_export` · `veto_memory_import` |
|
|
94
94
|
| **Learning** | `veto_record_outcome` · `veto_learning_stats` · `veto_learning_apply` |
|
|
95
95
|
| **Handoff** | `veto_handoff` · `veto_continue` · `veto_platform_setup` |
|
|
96
96
|
| **Observability** | `veto_usage_status` · `veto_audit_log` · `veto_health` · `veto_metrics` · `veto_snapshot` |
|
|
@@ -238,6 +238,8 @@ veto patterns [prefix] # List learned agent/routing patterns
|
|
|
238
238
|
veto tools [filter] # List all 93 MCP tools (--json for machine output)
|
|
239
239
|
veto agents [filter] # List all 49 specialists — workers + council (--json)
|
|
240
240
|
veto routing [status|log|reset] # Inspect the opt-in routing feedback loop
|
|
241
|
+
veto transcripts <sub> # Opt-in transcript capture (off by default) —
|
|
242
|
+
# enable|status|list|show|purge|disable
|
|
241
243
|
veto hook install # Install pre-commit secrets scan hook
|
|
242
244
|
veto hook remove # Remove the veto pre-commit hook
|
|
243
245
|
veto check # Scan staged changes for secrets (used by hook)
|
|
@@ -252,7 +254,7 @@ veto doctor
|
|
|
252
254
|
|
|
253
255
|
Veto Doctor — system health check
|
|
254
256
|
─────────────────────────────────────────────────────
|
|
255
|
-
✓ Node.js v22.
|
|
257
|
+
✓ Node.js v22.13.0
|
|
256
258
|
✓ ~/.veto exists
|
|
257
259
|
✓ Database ~/.veto/veto.db
|
|
258
260
|
17 sessions · 12 memories · 3 patterns
|
|
@@ -441,8 +443,85 @@ Platform switching is manual — Veto surfaces which platform has budget remaini
|
|
|
441
443
|
|
|
442
444
|
---
|
|
443
445
|
|
|
446
|
+
## Session Transcript Capture (opt-in)
|
|
447
|
+
|
|
448
|
+
`veto_session_save` writes a ~1k-token summary. That is enough to resume, but not enough to answer *"three weeks ago, what exactly did we conclude, and when?"* Transcript capture keeps the detail a summary throws away and makes it searchable — with no API keys, no per-query cost, and nothing leaving your machine. It is a metadata table-of-contents plus a portable BM25 index built on core SQLite only — no FTS5, so it works on every supported Node — fused with local semantic search, and your AI as the reranker.
|
|
449
|
+
|
|
450
|
+
> ### ⚠️ Read this before you enable it
|
|
451
|
+
>
|
|
452
|
+
> **Veto copies your AI client's own conversation memory.** On save, Veto archives a byte-for-byte copy of the host CLI's transcript file — every message you sent, every reply, and all tool activity — into its own local store.
|
|
453
|
+
>
|
|
454
|
+
> - **The copy is independent.** The original file is never modified, but Veto's copy outlives it. Clearing your AI client's history, or the client rotating its own logs, will **not** remove the archive. Only `veto transcripts purge` or the retention window does.
|
|
455
|
+
> - **It inherits whatever was in the session.** Secrets, customer data, third parties' information — if you pasted it, it is in the archive. Detected secrets are masked everywhere an AI can read them, but the raw archive on disk is private data. Treat it like your shell history.
|
|
456
|
+
> - **Local only.** Nothing is uploaded or shared. The archive directory deliberately avoids cloud-synced folders, and a sync path is flagged if one is detected.
|
|
457
|
+
> - **Off until you say so.** Capture is disabled by default. `veto transcripts enable` prints this disclosure in full and records versioned consent; if the disclosure materially changes, you are re-prompted.
|
|
458
|
+
|
|
459
|
+
```bash
|
|
460
|
+
veto transcripts enable # Opt in — prints what/where/retention, records consent
|
|
461
|
+
veto transcripts status # State, archive dir, retention, disk usage
|
|
462
|
+
veto transcripts list # Archived sessions
|
|
463
|
+
veto transcripts show <id> # One session's table-of-contents + facts
|
|
464
|
+
veto transcripts purge <id> # Delete an archive (also --project=<dir> | --all)
|
|
465
|
+
veto transcripts disable # Stop capturing (existing archives are kept)
|
|
466
|
+
```
|
|
467
|
+
|
|
468
|
+
Recall runs through `veto_session_replay` as a two-call loop — search, then expand:
|
|
469
|
+
|
|
470
|
+
```
|
|
471
|
+
{ query: "npm E404 publish" } → table-of-contents + top hits with snippets
|
|
472
|
+
{ expand: { event_id: 412 } } → the exact lines, masked, with a turn + timestamp citation
|
|
473
|
+
```
|
|
474
|
+
|
|
475
|
+
Claude Code is the only adapter in 3.1.0; Codex and Gemini follow.
|
|
476
|
+
|
|
477
|
+
### Semantic recall — finding what you can't quite remember
|
|
478
|
+
|
|
479
|
+
Keyword search fails on the question you actually have. You remember *what was
|
|
480
|
+
decided*, not the words it was written in — so "why did the upload fail" never
|
|
481
|
+
finds the note that says "the credentials had expired".
|
|
482
|
+
|
|
483
|
+
Veto searches meaning as well as words. Each captured event is split into
|
|
484
|
+
overlapping windows and embedded locally; a query is embedded the same way, and
|
|
485
|
+
the two rankings — keywords and meaning — are fused so neither can bury the
|
|
486
|
+
other. An exact identifier like `E404` still ranks first, and a question sharing
|
|
487
|
+
no vocabulary with its answer still finds it.
|
|
488
|
+
|
|
489
|
+
**This runs entirely on your machine.** No API key, no per-query cost, no text
|
|
490
|
+
leaving the disk, and it works offline. What buys that is a **7 MB embedding
|
|
491
|
+
table** installed as a normal dependency:
|
|
492
|
+
|
|
493
|
+
- It is **downloaded once per machine** by npm's shared cache, not per project.
|
|
494
|
+
- It ships with Veto whether or not you enable transcript capture. That is the
|
|
495
|
+
honest cost of the design: pinning an immutable package means the bytes can
|
|
496
|
+
never change under a released version, and it removes the runtime download,
|
|
497
|
+
checksum and mirror machinery that a fetch-on-demand model would need.
|
|
498
|
+
- It is loaded **lazily, at the first semantic query — never at startup.** If it
|
|
499
|
+
is missing or damaged, search silently falls back to keywords only and Veto
|
|
500
|
+
keeps working.
|
|
501
|
+
|
|
502
|
+
The table is [potion-base-8M](https://huggingface.co/minishlab/potion-base-8M)
|
|
503
|
+
by [Minish Lab](https://github.com/MinishLab/model2vec) (MIT), distilled from
|
|
504
|
+
`baai/bge-base-en-v1.5` and repacked to int8. It is a static lookup table, not a
|
|
505
|
+
neural network: there is no model running at query time, which is why a search
|
|
506
|
+
costs milliseconds. The inference code is Veto's own.
|
|
507
|
+
|
|
508
|
+
---
|
|
509
|
+
|
|
444
510
|
## Release Notes
|
|
445
511
|
|
|
512
|
+
### 3.1.0
|
|
513
|
+
- **Semantic recall — search finds what you meant, not just what you typed.** Transcript search now fuses the existing keyword index with local semantic search, so a question that shares no vocabulary with its answer still finds it: "why did the upload fail" surfaces the note saying "the credentials had expired". Each captured event is split into overlapping windows and scored by its best match, because embedding a whole event dilutes the one sentence that answers the question. Exact identifiers are unaffected — `E404` still ranks first. The two rankings are fused by reciprocal rank rather than blended scores, so neither ranker can bury the other.
|
|
514
|
+
- **It runs on your machine, offline, at no per-query cost.** What pays for that is a 7 MB embedding table — [potion-base-8M](https://huggingface.co/minishlab/potion-base-8M) by [Minish Lab](https://github.com/MinishLab/model2vec) (MIT), distilled from `baai/bge-base-en-v1.5`, repacked to int8, shipped as the pinned package `@jigyasudham/veto-model`. npm's cache downloads it once per machine. It installs with Veto whether or not you enable capture: pinning an immutable version means the bytes can never change under a release, with no download, checksum or mirror machinery at runtime. It is a static lookup table, not a neural network — nothing executes at query time, and the inference code is Veto's own.
|
|
515
|
+
- **The model is never load-bearing.** It resolves at the first semantic query and never at startup, so a missing or damaged copy degrades search to keyword-only with everything else untouched. Veto's own package is unchanged in size; the table is a dependency, not contents.
|
|
516
|
+
- **Search got roughly 5x faster at scale, keyword search included.** Project-wide recall over a 50-session archive went from 178 ms to 38 ms, and keyword-only from 65 ms to 13 ms, by loading the index once instead of re-reading it per query. That also removes a latency ceiling that affected 3.0.0. Beyond roughly 100 archived sessions in one project, recall degrades gradually and remains usable.
|
|
517
|
+
- **Correction to 3.0.0's release note:** it described transcript search as "SQLite FTS5/BM25". FTS5 was removed before 3.0.0 shipped precisely because it is absent on some Node builds; the index has always been portable BM25 on core SQLite.
|
|
518
|
+
|
|
519
|
+
### 3.0.0
|
|
520
|
+
- **Never lose a session again — opt-in transcript capture with vectorless recall.** A saved session has always carried a ~1k-token summary, which is enough to resume but cannot answer "what exactly did we conclude three weeks ago, and when?" Veto can now archive a copy of your host CLI's own conversation transcript and build a memory pyramid over it — the raw gzipped original, deterministic facts, the conversation spine, and the existing summary — then search it with a metadata table-of-contents plus a portable BM25 index that uses core SQLite only, so it runs on every supported Node. No embeddings, no model downloads, no API keys, no new runtime dependencies. Recall is a two-call loop through `veto_session_replay`: query for a table-of-contents and ranked snippets, then expand a hit into the exact source lines with a turn-and-timestamp citation. Validated against a real 784-line session, where recall pinpointed a conclusion the summary could not reconstruct. Claude Code is the only adapter in this release.
|
|
521
|
+
- **Capture is off until you turn it on, and it tells you exactly what it takes.** `veto transcripts enable` prints a plain-language disclosure — that Veto copies the AI client's own session memory, that the copy outlives the client's own history, that the archive inherits the sensitivity of anything you pasted, and where on disk it lands — then records versioned consent, re-prompting if that disclosure ever materially changes. Archives stay on your machine, are kept out of cloud-synced directories, are pruned on a configurable retention window, and are removed by `veto transcripts purge` as a true cascade with no orphan rows.
|
|
522
|
+
- **Secrets cannot transit into an AI context.** Detected credentials are masked to `REDACTED[sha256:…]` on the way into every derived layer *and* again on every byte range served back out of the raw archive — so a secret sitting in an untouched original still cannot reach a model through recall. Recalled content is returned as data-not-instructions, and tool results are treated as untrusted input.
|
|
523
|
+
- **`veto.db` is untouched.** All capture state lives in a sidecar `transcripts.db`, leaving the VS Code HUD's read-contract unaffected.
|
|
524
|
+
|
|
446
525
|
### 2.9.0
|
|
447
526
|
- **Four more agents do real analysis.** The privacy, performance, auth, and compatibility agents were structured playbooks; they are now dual-mode analyzers with hand-written deterministic checks — PII/PHI handling, runtime anti-patterns, auth defects (e.g. JWT `alg: none`), and outdated-API usage — growing the analyze-capable roster from 8 to 12. Each is scoped to avoid duplicating the security scanner's and secrets agent's findings, and all keep their LLM upgrade path.
|
|
448
527
|
- **Agent-backed tools can now complete the LLM upgrade round-trip.** All 19 agent-backed advisor, generator, and git tools used to emit an `llm_upgrade` prompt with no way to hand the reasoning back. Each now accepts an `agent_response` parameter: call the tool, reason as the specialist, then call again with the structured JSON to get the upgraded result. The deterministic answer is always returned either way — the upgrade attaches alongside it, never replaces it.
|
|
@@ -536,7 +615,7 @@ Every handler module is importable in isolation, so behaviour is covered by `tes
|
|
|
536
615
|
## Tech Stack
|
|
537
616
|
|
|
538
617
|
- **Language:** TypeScript (strict mode)
|
|
539
|
-
- **Runtime:** Node.js 22.
|
|
618
|
+
- **Runtime:** Node.js 22.13+ or 23.4+ (built-in `node:sqlite` — no native compilation). It exists from 22.5 but only behind `--experimental-sqlite`, so 22.13 is the real floor.
|
|
540
619
|
- **Dependencies:** `@modelcontextprotocol/sdk` only — one package, zero native addons
|
|
541
620
|
- **Memory:** Local SQLite — zero config, works offline, portable via JSON export
|
|
542
621
|
- **Platforms:** Claude Code · Gemini CLI · Antigravity CLI · Codex CLI · Cursor · Windsurf · Zed
|
package/dist/cli/statusline.d.ts
CHANGED
|
@@ -13,6 +13,8 @@ export interface ComposeOptions {
|
|
|
13
13
|
}
|
|
14
14
|
export declare function composeStatusline(data: StatuslineData, opts?: ComposeOptions): string;
|
|
15
15
|
export interface ClaudeStatusInput {
|
|
16
|
+
session_id?: string | null;
|
|
17
|
+
transcript_path?: string | null;
|
|
16
18
|
context_window?: {
|
|
17
19
|
used_percentage?: number | null;
|
|
18
20
|
} | null;
|
|
@@ -38,7 +40,14 @@ export interface ClaudeLiveData {
|
|
|
38
40
|
export declare function parseClaudeInput(raw: string): ClaudeLiveData;
|
|
39
41
|
export declare function parseClaudeContextPct(raw: string): number | null;
|
|
40
42
|
export declare function parseClaudeCwd(raw: string): string | null;
|
|
43
|
+
export interface ClaudeSessionRef {
|
|
44
|
+
sessionId: string;
|
|
45
|
+
transcriptPath: string;
|
|
46
|
+
projectDir: string | null;
|
|
47
|
+
}
|
|
48
|
+
export declare function parseClaudeSession(raw: string): ClaudeSessionRef | null;
|
|
41
49
|
export declare function printStatusline(opts?: ComposeOptions, capturePath?: string): Promise<void>;
|
|
50
|
+
export declare function maybeRecordSessionMapping(raw: string | null): Promise<boolean>;
|
|
42
51
|
export interface InstallResult {
|
|
43
52
|
ok: boolean;
|
|
44
53
|
message: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statusline.d.ts","sourceRoot":"","sources":["../../src/cli/statusline.ts"],"names":[],"mappings":"AA2BA,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC;IAC3C,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAwBD,wBAAgB,kBAAkB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,cAAc,CAuBtE;
|
|
1
|
+
{"version":3,"file":"statusline.d.ts","sourceRoot":"","sources":["../../src/cli/statusline.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/statusline.js
CHANGED
|
@@ -15,7 +15,7 @@ import { execSync } from 'node:child_process';
|
|
|
15
15
|
import { join, dirname } from 'node:path';
|
|
16
16
|
import { homedir } from 'node:os';
|
|
17
17
|
import { getDbPath, getDb, normalizeProjectDir } from '../memory/local.js';
|
|
18
|
-
// node:sqlite is
|
|
18
|
+
// node:sqlite is unflagged from Node 22.13+/23.4+ — use createRequire so bundlers skip it.
|
|
19
19
|
// Required lazily inside openReadOnly so importing this module (server.ts pulls in
|
|
20
20
|
// statuslineSetupInstruction at startup) never dies on runtimes without node:sqlite.
|
|
21
21
|
const _require = createRequire(import.meta.url);
|
|
@@ -81,10 +81,14 @@ function queryStatusline(db, projectDir) {
|
|
|
81
81
|
// shows the globally-newest debate, which may belong to a different project. When
|
|
82
82
|
// projectDir is provided we do NOT fall back to another project's verdict; the
|
|
83
83
|
// segment simply drops if this project has no council row yet.
|
|
84
|
+
// debated_at is an ISO string with millisecond resolution and `id` is a random
|
|
85
|
+
// UUID, so two debates recorded in the same millisecond have no ordering at all
|
|
86
|
+
// and SQLite is free to return either. Tie-break on rowid, which increments per
|
|
87
|
+
// insert, so "newest" always means the row written last.
|
|
84
88
|
const scoped = projectDir ? normalizeProjectDir(projectDir) : undefined;
|
|
85
89
|
const row = (scoped
|
|
86
|
-
? db.prepare('SELECT verdict FROM council_outcomes WHERE project_dir = ? ORDER BY debated_at DESC LIMIT 1').get(scoped)
|
|
87
|
-
: db.prepare('SELECT verdict FROM council_outcomes ORDER BY debated_at DESC LIMIT 1').get());
|
|
90
|
+
? db.prepare('SELECT verdict FROM council_outcomes WHERE project_dir = ? ORDER BY debated_at DESC, rowid DESC LIMIT 1').get(scoped)
|
|
91
|
+
: db.prepare('SELECT verdict FROM council_outcomes ORDER BY debated_at DESC, rowid DESC LIMIT 1').get());
|
|
88
92
|
const v = (row?.verdict ?? '').toUpperCase();
|
|
89
93
|
if (v === 'GREEN' || v === 'YELLOW' || v === 'RED')
|
|
90
94
|
data.verdict = v;
|
|
@@ -193,6 +197,28 @@ export function parseClaudeCwd(raw) {
|
|
|
193
197
|
return null;
|
|
194
198
|
}
|
|
195
199
|
}
|
|
200
|
+
// Extract the live session's id + transcript path (+ workspace dir) from the stdin
|
|
201
|
+
// payload, for transcript-capture mapping. Returns null unless BOTH ids are present —
|
|
202
|
+
// so a Claude Code build that omits them (or bad/empty JSON) degrades to "no mapping"
|
|
203
|
+
// and capture later no-ops, rather than guessing.
|
|
204
|
+
export function parseClaudeSession(raw) {
|
|
205
|
+
try {
|
|
206
|
+
const j = JSON.parse(raw);
|
|
207
|
+
const sessionId = typeof j?.session_id === 'string' && j.session_id.length > 0 ? j.session_id : null;
|
|
208
|
+
const transcriptPath = typeof j?.transcript_path === 'string' && j.transcript_path.length > 0 ? j.transcript_path : null;
|
|
209
|
+
if (!sessionId || !transcriptPath)
|
|
210
|
+
return null;
|
|
211
|
+
const dir = j?.workspace?.current_dir ?? j?.workspace?.project_dir ?? j?.cwd;
|
|
212
|
+
return {
|
|
213
|
+
sessionId,
|
|
214
|
+
transcriptPath,
|
|
215
|
+
projectDir: typeof dir === 'string' && dir.length > 0 ? dir : null,
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
catch {
|
|
219
|
+
return null;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
196
222
|
// Read the stdin payload Claude Code sends. Crash-proof and never blocks the prompt:
|
|
197
223
|
// returns null immediately when run from a TTY (manual invocation) and bails after a
|
|
198
224
|
// short timeout if no data arrives. Claude Code closes stdin after writing, so the
|
|
@@ -282,6 +308,36 @@ export async function printStatusline(opts = {}, capturePath) {
|
|
|
282
308
|
resolve();
|
|
283
309
|
}
|
|
284
310
|
});
|
|
311
|
+
// AFTER the line is flushed (so this never delays the prompt): fire-and-forget
|
|
312
|
+
// session-mapping write. Best-effort — see maybeRecordSessionMapping.
|
|
313
|
+
await maybeRecordSessionMapping(raw);
|
|
314
|
+
}
|
|
315
|
+
// The hot-path fire-and-forget mapping write, extracted so the gate is unit-testable
|
|
316
|
+
// without mocking stdin. Only writes when transcript capture is opted-in AND the
|
|
317
|
+
// payload carries both a session id and transcript path. Never throws; returns
|
|
318
|
+
// whether a mapping was recorded. Non-users pay only one config read and stop.
|
|
319
|
+
export async function maybeRecordSessionMapping(raw) {
|
|
320
|
+
if (!raw)
|
|
321
|
+
return false;
|
|
322
|
+
try {
|
|
323
|
+
const { isCaptureEnabled } = await import('../transcripts/config.js');
|
|
324
|
+
if (!isCaptureEnabled())
|
|
325
|
+
return false;
|
|
326
|
+
const ref = parseClaudeSession(raw);
|
|
327
|
+
if (!ref)
|
|
328
|
+
return false;
|
|
329
|
+
const { recordSessionMapping } = await import('../transcripts/mapping.js');
|
|
330
|
+
recordSessionMapping({
|
|
331
|
+
source: 'claude',
|
|
332
|
+
sourceSessionId: ref.sessionId,
|
|
333
|
+
transcriptPath: ref.transcriptPath,
|
|
334
|
+
projectDir: ref.projectDir,
|
|
335
|
+
});
|
|
336
|
+
return true;
|
|
337
|
+
}
|
|
338
|
+
catch {
|
|
339
|
+
return false; // mapping is best-effort; never affects the prompt
|
|
340
|
+
}
|
|
285
341
|
}
|
|
286
342
|
// Resolve the settings.json for a client. Only Claude Code exposes a documented
|
|
287
343
|
// `statusLine` command hook today; others are gated behind --client as a stretch.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statusline.js","sourceRoot":"","sources":["../../src/cli/statusline.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"statusline.js","sourceRoot":"","sources":["../../src/cli/statusline.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -518,17 +518,20 @@ Recommended start sequence:
|
|
|
518
518
|
}
|
|
519
519
|
// ── Post-install health check ───────────────────────────────────────────────
|
|
520
520
|
// Confirm the server can actually run before the user discovers a failure inside
|
|
521
|
-
// their AI client. The one real runtime risk is node:sqlite (
|
|
521
|
+
// their AI client. The one real runtime risk is node:sqlite (unflagged in 22.13+/23.4+).
|
|
522
522
|
console.log(' ' + c.bold('Post-install check'));
|
|
523
523
|
console.log(c.dim(' ─────────────────────────────────────────────────────'));
|
|
524
524
|
let healthOk = true;
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
525
|
+
// Ask the runtime whether it can actually load node:sqlite rather than deriving it
|
|
526
|
+
// from the version number. The arithmetic version of this check accepted 22.5–22.12
|
|
527
|
+
// and 23.0–23.3, where the module exists only behind --experimental-sqlite, so
|
|
528
|
+
// `veto doctor` reported a green tick on installs whose persistence was dead.
|
|
529
|
+
const { sqliteAvailable } = await import('./memory/local.js');
|
|
530
|
+
if (sqliteAvailable()) {
|
|
528
531
|
console.log(` ${c.green('✓')} Node.js ${process.version}`);
|
|
529
532
|
}
|
|
530
533
|
else {
|
|
531
|
-
console.log(` ${c.red('✗')} Node.js ${process.version} — Veto needs >= 22.
|
|
534
|
+
console.log(` ${c.red('✗')} Node.js ${process.version} — Veto needs >= 22.13 (or >= 23.4) for node:sqlite; persistence will not work`);
|
|
532
535
|
healthOk = false;
|
|
533
536
|
}
|
|
534
537
|
try {
|
|
@@ -631,6 +634,37 @@ async function doctorCommand() {
|
|
|
631
634
|
console.log(` ${c.red('✗')} Database error: ${err instanceof Error ? err.message : String(err)}`);
|
|
632
635
|
issues++;
|
|
633
636
|
}
|
|
637
|
+
// Semantic search model. It degrades SILENTLY at query time — by design, so a
|
|
638
|
+
// damaged copy can never take recall down — which is precisely why its state
|
|
639
|
+
// belongs in a health check. Without this line, a missing model is
|
|
640
|
+
// indistinguishable from search simply getting worse.
|
|
641
|
+
try {
|
|
642
|
+
const { isCaptureEnabled } = await import('./transcripts/config.js');
|
|
643
|
+
const { embeddingsAvailable, modelProvenance } = await import('./transcripts/embed.js');
|
|
644
|
+
const captureOn = isCaptureEnabled();
|
|
645
|
+
if (embeddingsAvailable()) {
|
|
646
|
+
const { model_id, revision } = modelProvenance();
|
|
647
|
+
console.log(` ${c.green('✓')} Semantic search ${c.dim(`${model_id}@${revision.slice(0, 12)}`)}`);
|
|
648
|
+
if (!captureOn) {
|
|
649
|
+
console.log(` ${c.dim(` transcript capture is off — enable with ${c.cyan('veto transcripts enable')}`)}`);
|
|
650
|
+
}
|
|
651
|
+
}
|
|
652
|
+
else if (captureOn) {
|
|
653
|
+
// Only an issue when capture is on: that is the one case where a user is
|
|
654
|
+
// actively searching and silently getting less than they should.
|
|
655
|
+
console.log(` ${c.yellow('⚠')} Semantic search unavailable — recall is keyword-only`);
|
|
656
|
+
console.log(` ${c.dim(` the embedding table ships with Veto; reinstall to restore it: ${c.cyan('npm i -g @jigyasudham/veto@latest')}`)}`);
|
|
657
|
+
issues++;
|
|
658
|
+
}
|
|
659
|
+
else {
|
|
660
|
+
console.log(` ${c.dim('·')} Semantic search idle ${c.dim('— transcript capture is off')}`);
|
|
661
|
+
}
|
|
662
|
+
}
|
|
663
|
+
catch {
|
|
664
|
+
// The whole feature is optional; a health check must never be the thing
|
|
665
|
+
// that fails because an optional dependency is absent.
|
|
666
|
+
console.log(` ${c.dim('·')} Semantic search unavailable ${c.dim('— recall would run keyword-only')}`);
|
|
667
|
+
}
|
|
634
668
|
console.log('');
|
|
635
669
|
console.log(' ' + c.bold('MCP Registrations'));
|
|
636
670
|
console.log(c.dim(' ─────────────────────────────────────────────────────'));
|
|
@@ -968,6 +1002,125 @@ async function statuslineCommand() {
|
|
|
968
1002
|
console.error(c.dim(' Usage: veto statusline <install|uninstall|print|status>'));
|
|
969
1003
|
process.exit(1);
|
|
970
1004
|
}
|
|
1005
|
+
async function transcriptsCommand() {
|
|
1006
|
+
const sub = process.argv[3] ?? 'status';
|
|
1007
|
+
const args = process.argv.slice(4);
|
|
1008
|
+
const { enableCapture, disableCapture, captureStatus, consentText } = await import('./transcripts/config.js');
|
|
1009
|
+
if (sub === 'enable') {
|
|
1010
|
+
const r = enableCapture();
|
|
1011
|
+
console.log('');
|
|
1012
|
+
console.log(c.green(c.bold(' ✓ Transcript capture enabled')));
|
|
1013
|
+
console.log('');
|
|
1014
|
+
console.log(' ' + consentText(r.dir, r.retention_days).replace(/\n/g, '\n '));
|
|
1015
|
+
console.log('');
|
|
1016
|
+
if (r.reconsented)
|
|
1017
|
+
console.log(c.dim(' (Disclosure changed since you last enabled — consent re-recorded.)\n'));
|
|
1018
|
+
return;
|
|
1019
|
+
}
|
|
1020
|
+
if (sub === 'disable') {
|
|
1021
|
+
disableCapture();
|
|
1022
|
+
console.log('');
|
|
1023
|
+
console.log(c.yellow(' ✓ Transcript capture disabled.') + c.dim(' Existing archives are kept — remove them with: veto transcripts purge'));
|
|
1024
|
+
console.log('');
|
|
1025
|
+
return;
|
|
1026
|
+
}
|
|
1027
|
+
if (sub === 'status') {
|
|
1028
|
+
const s = captureStatus();
|
|
1029
|
+
const { transcriptsDiskUsage, fmtBytes } = await import('./transcripts/manage.js');
|
|
1030
|
+
let disk;
|
|
1031
|
+
try {
|
|
1032
|
+
disk = transcriptsDiskUsage();
|
|
1033
|
+
}
|
|
1034
|
+
catch {
|
|
1035
|
+
disk = null;
|
|
1036
|
+
}
|
|
1037
|
+
console.log('');
|
|
1038
|
+
console.log(c.bold(' Veto Transcript Capture'));
|
|
1039
|
+
console.log(c.dim(' ─────────────────────────────────────────────────────'));
|
|
1040
|
+
const state = s.effective ? c.green('enabled') : s.needsReconsent ? c.yellow('needs re-consent — run: veto transcripts enable') : c.dim('disabled');
|
|
1041
|
+
console.log(` Capture: ${state}`);
|
|
1042
|
+
console.log(` Archive dir: ${c.dim(s.dir)}${s.usingDefaultDir ? c.dim(' (default)') : ''}`);
|
|
1043
|
+
console.log(` Retention: ${s.retention_days} days`);
|
|
1044
|
+
if (disk)
|
|
1045
|
+
console.log(` Disk usage: ${fmtBytes(disk.totalBytes)} ${c.dim(`(${disk.archives} session(s); ${fmtBytes(disk.archiveBytes)} archives + ${fmtBytes(disk.dbBytes)} index)`)}`);
|
|
1046
|
+
if (s.consent_at)
|
|
1047
|
+
console.log(` Consent: ${c.dim(`v${s.consent_version} · accepted ${s.consent_at}`)}`);
|
|
1048
|
+
if (s.cloudSyncWarning)
|
|
1049
|
+
console.log(c.yellow(` ⚠ Archive dir looks cloud-synced (${s.cloudSyncWarning}) — consider a local path.`));
|
|
1050
|
+
console.log('');
|
|
1051
|
+
console.log(c.dim(' enable · disable · list · show <id> · purge <id>|--project <dir>|--all'));
|
|
1052
|
+
console.log('');
|
|
1053
|
+
return;
|
|
1054
|
+
}
|
|
1055
|
+
if (sub === 'list') {
|
|
1056
|
+
const { listArchives, fmtBytes } = await import('./transcripts/manage.js');
|
|
1057
|
+
const projFlag = args.find(a => a.startsWith('--project='))?.split('=')[1];
|
|
1058
|
+
const rows = listArchives({ projectDir: projFlag });
|
|
1059
|
+
console.log('');
|
|
1060
|
+
console.log(c.bold(` Archived transcripts${projFlag ? ` (project ${projFlag})` : ''}`));
|
|
1061
|
+
console.log(c.dim(' ─────────────────────────────────────────────────────'));
|
|
1062
|
+
if (rows.length === 0)
|
|
1063
|
+
console.log(c.dim(' (none captured yet)'));
|
|
1064
|
+
for (const r of rows) {
|
|
1065
|
+
console.log(` ${c.cyan(r.sourceSessionId)} ${c.dim(r.source)} ${r.events} ev ${fmtBytes(r.archiveBytes)} ${c.dim(r.updatedAt)}${r.indexed ? '' : c.yellow(' (unindexed)')}`);
|
|
1066
|
+
if (r.projectDir)
|
|
1067
|
+
console.log(` ${c.dim(r.projectDir)}`);
|
|
1068
|
+
}
|
|
1069
|
+
console.log('');
|
|
1070
|
+
return;
|
|
1071
|
+
}
|
|
1072
|
+
if (sub === 'show') {
|
|
1073
|
+
const id = args[0];
|
|
1074
|
+
if (!id) {
|
|
1075
|
+
console.error(c.red(' Usage: veto transcripts show <source_session_id>'));
|
|
1076
|
+
process.exit(1);
|
|
1077
|
+
}
|
|
1078
|
+
const { showArchive, fmtBytes } = await import('./transcripts/manage.js');
|
|
1079
|
+
const { renderTOC } = await import('./transcripts/toc.js');
|
|
1080
|
+
const { renderFacts } = await import('./transcripts/pyramid.js');
|
|
1081
|
+
const d = showArchive(id);
|
|
1082
|
+
if (!d) {
|
|
1083
|
+
console.error(c.red(` No archive for session ${id}`));
|
|
1084
|
+
process.exit(1);
|
|
1085
|
+
}
|
|
1086
|
+
console.log('');
|
|
1087
|
+
console.log(c.bold(` Transcript ${id}`));
|
|
1088
|
+
console.log(c.dim(' ─────────────────────────────────────────────────────'));
|
|
1089
|
+
console.log(` ${d.summary.events} events · ${fmtBytes(d.summary.archiveBytes)} · captured ${d.summary.capturedAt}`);
|
|
1090
|
+
console.log('');
|
|
1091
|
+
console.log(c.bold(' Facts'));
|
|
1092
|
+
console.log(' ' + renderFacts(d.facts).replace(/\n/g, '\n '));
|
|
1093
|
+
console.log('');
|
|
1094
|
+
console.log(c.bold(` Table of contents (${d.toc.length} phases)`));
|
|
1095
|
+
console.log(' ' + renderTOC(d.toc).replace(/\n/g, '\n '));
|
|
1096
|
+
console.log('');
|
|
1097
|
+
return;
|
|
1098
|
+
}
|
|
1099
|
+
if (sub === 'purge') {
|
|
1100
|
+
const { purgeSession, purgeProject, purgeAll } = await import('./transcripts/manage.js');
|
|
1101
|
+
const projFlag = args.find(a => a.startsWith('--project='))?.split('=')[1];
|
|
1102
|
+
const all = args.includes('--all');
|
|
1103
|
+
const id = args.find(a => !a.startsWith('--'));
|
|
1104
|
+
let r;
|
|
1105
|
+
if (all)
|
|
1106
|
+
r = purgeAll();
|
|
1107
|
+
else if (projFlag)
|
|
1108
|
+
r = purgeProject(projFlag);
|
|
1109
|
+
else if (id)
|
|
1110
|
+
r = purgeSession(id);
|
|
1111
|
+
else {
|
|
1112
|
+
console.error(c.red(' Usage: veto transcripts purge <source_session_id> | --project=<dir> | --all'));
|
|
1113
|
+
process.exit(1);
|
|
1114
|
+
}
|
|
1115
|
+
console.log('');
|
|
1116
|
+
console.log(c.green(` ✓ Purged ${r.archives} archive(s): ${r.events} events, ${r.indexRows} index rows, ${r.files} file(s), ${r.mappings} mapping(s) removed.`));
|
|
1117
|
+
console.log('');
|
|
1118
|
+
return;
|
|
1119
|
+
}
|
|
1120
|
+
console.error(c.red(` Unknown transcripts subcommand: ${sub}`));
|
|
1121
|
+
console.error(c.dim(' Usage: veto transcripts <enable|disable|status|list|show|purge>'));
|
|
1122
|
+
process.exit(1);
|
|
1123
|
+
}
|
|
971
1124
|
function shortHelpCommand() {
|
|
972
1125
|
console.log('');
|
|
973
1126
|
console.log(c.bold(c.cyan(' veto')) + c.dim(` v${VERSION}`) + c.dim(` — 93 agentic tools. 49 specialists. Every major AI CLI. Zero extra cost on subscriptions.`));
|
|
@@ -986,6 +1139,8 @@ function shortHelpCommand() {
|
|
|
986
1139
|
console.log(` Routing feedback loop (opt-in signal storage)`);
|
|
987
1140
|
console.log(` ${c.cyan('veto statusline')} ${c.dim('[install|uninstall|print|status]')}`);
|
|
988
1141
|
console.log(` Compact Veto line under your AI CLI prompt`);
|
|
1142
|
+
console.log(` ${c.cyan('veto transcripts')} ${c.dim('[enable|disable|status]')}`);
|
|
1143
|
+
console.log(` Opt-in local session-transcript capture (off by default)`);
|
|
989
1144
|
console.log(` ${c.cyan('veto version')} Show version (alias for status)`);
|
|
990
1145
|
console.log(` ${c.cyan('veto hook install')} Install pre-commit secrets scan hook`);
|
|
991
1146
|
console.log(` ${c.cyan('veto hook remove')} Remove the veto pre-commit hook`);
|
|
@@ -1446,6 +1601,12 @@ switch (command) {
|
|
|
1446
1601
|
process.exit(1);
|
|
1447
1602
|
});
|
|
1448
1603
|
break;
|
|
1604
|
+
case 'transcripts':
|
|
1605
|
+
transcriptsCommand().catch((err) => {
|
|
1606
|
+
console.error(c.red(`Error: ${err.message}`));
|
|
1607
|
+
process.exit(1);
|
|
1608
|
+
});
|
|
1609
|
+
break;
|
|
1449
1610
|
case 'hook':
|
|
1450
1611
|
hookCommand().catch((err) => {
|
|
1451
1612
|
console.error(c.red(`Error: ${err.message}`));
|