savant-code 0.0.18 → 0.0.20

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.
Files changed (2) hide show
  1. package/README.md +36 -3
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -138,6 +138,10 @@ COMMAND_CODE_API_KEY=dummy-commandcode-key-replace-me
138
138
  # Local Ollama override (optional)
139
139
  # OLLAMA_HOST=http://localhost:11434
140
140
 
141
+ # GitHub MCP helper (read-only) and database helper
142
+ # SAVANT_CODE_GITHUB_TOKEN=dummy-github-token-replace-me
143
+ # SAVANT_CODE_DATABASE_URL=sqlite://./local.db
144
+
141
145
  # Optional backend and advanced integrations
142
146
  # SAVANT_CODE_API_KEY=backend-dummy-replace-me
143
147
  # CLOUDFLARE_API_TOKEN=cloudflare-dummy-replace-me
@@ -147,6 +151,15 @@ AMAZON_WORKER=amazon-worker-dummy-replace-me
147
151
 
148
152
  `AMAZON_WORKER` is retained for local deployment integrations. `GITHUB_TOKEN` and `NPM_PUBLISH` are intentionally not part of the public template because they are private release credentials.
149
153
 
154
+ ### Building release binaries
155
+
156
+ Release binaries ship a sibling `env.json` with the canonical production `NEXT_PUBLIC_*` defaults (prod environment, `https://savant-code.com`, `support@savant-code.com`, release placeholders). `cli/scripts/build-binary.ts` fails the build if any dev `NEXT_PUBLIC_*` value — localhost URLs, personal emails, or dummy keys from the build shell or a repo `.env.local` — leaks into that file. Two escape hatches exist for intentional deviations:
157
+
158
+ - `SAVANT_CODE_BUILD_ENV=<env>` — build a local dev binary (skips the integrity check).
159
+ - `SAVANT_CODE_ALLOW_NEXT_PUBLIC_OVERRIDES=1` — CI/release override when injecting real production keys (for example PostHog or Stripe) that intentionally differ from the canonical placeholders.
160
+
161
+ Build release artifacts from a clean shell (no dev `NEXT_PUBLIC_*` exports, no `.env.local` loaded) so `env.json` matches the canonical defaults exactly.
162
+
150
163
  ## What Makes Savant-Code Different
151
164
 
152
165
  Savant-Code is a multi-agent system rather than a single model guessing at your code. Nine canonical ECHO roles coordinate with strict separation of duties:
@@ -160,7 +173,7 @@ Savant-Code is a multi-agent system rather than a single model guessing at your
160
173
  | **Recorder** | Manages FID lifecycle and release tracking |
161
174
  | **Thinker** | Performs deep sequential reasoning for complex problems |
162
175
  | **Scout** | Explores files and code to gather context |
163
- | **Researcher** | Performs web search and documentation lookup |
176
+ | **Researcher** | Performs web search, documentation lookup, and multi-query `deep_research` |
164
177
  | **Scribe** | Captures session summaries and durable knowledge |
165
178
 
166
179
  Infrastructure helpers such as terminal execution, browser automation, and web/docs tool libraries support these roles; they are not additional roster members.
@@ -214,7 +227,7 @@ Retention is bounded to the most recent 20 turns, restore paths are revalidated,
214
227
  - `--permission-mode safe|prompt|unsafe` selects the startup policy.
215
228
  - `/permissions` (aliases `/sandbox` and `/safety`) views or changes the policy.
216
229
  - `safe` denies risky tools; `prompt` currently also denies them because interactive confirmations are not yet implemented; `unsafe` allows them explicitly.
217
- - `EDIT`, `ANALYZE`, and `SCAFFOLD` modes change the execution scope at runtime.
230
+ - `HYBRID`, `SCAFFOLD`, `STRICT`, and `ANALYZE` modes change the execution scope at runtime (hovering the toggle shows each mode's contract). `HYBRID` (default) is the frictionless flow: you write directly while the harness deterministically enforces Law 1/3 and the Verifier criteria at `warn`, and the full Perfection Loop auto-engages past the 20-line threshold. `STRICT` guarantees the full ceremony on **every** code change: Recorder creates a FID, RED (Detective) analyzes, GREEN (Forge) writes, AUDIT (Verifier) double-checks with Law-4 reachability greps, and Recorder archives the FID with a CHANGELOG entry. Use `STRICT` for security-sensitive or long-lived code (auth, payments, migrations); use `HYBRID` for day-to-day building and exploration.
218
231
 
219
232
  ### Planning, review, and goals
220
233
 
@@ -231,7 +244,21 @@ Retention is bounded to the most recent 20 turns, restore paths are revalidated,
231
244
  - User-level knowledge can be loaded alongside project knowledge.
232
245
  - OpenClaw-format `SKILL.md` files are discovered and exposed as native skills.
233
246
  - MCP servers are discovered at startup and their tools are published to the model.
247
+ - The Researcher role ships a mechanical `deep_research` tool: multi-query web research
248
+ with concurrency limits, URL dedup, domain scoring, citations, and graceful
249
+ degradation (`incomplete` + gaps) — a pure search facade, no second LLM.
250
+ - A read-only `github` helper connects to the official GitHub MCP server
251
+ (`SAVANT_CODE_GITHUB_TOKEN`) for PR/issue/CI review, code search, and secret scanning.
252
+ - A `database` helper exposes `list_tables`, `describe_table`, `execute_query`, and
253
+ `analyze_query` over `bun:sqlite` with an adapter-enforced safety contract:
254
+ read-only by default, LIMIT injection, SQL redaction, and destructive-DDL blocking.
255
+ - Browser automation supports `viewport` presets (mobile/tablet/desktop), an offline
256
+ WCAG accessibility scan, and optional session persistence.
234
257
  - Gateway model context lengths can be resolved from the live catalog.
258
+ - A harness-side ECHO compliance layer enforces Law 1 (read-before-write) and Law 3
259
+ (verify-after-write) deterministically, mechanically flags the Verifier-criteria
260
+ (10+ lines / 2+ files / new API / security-sensitive / Forge), and escalates when a
261
+ write touches an active FID — non-blocking receipts plus corrective steering.
235
262
 
236
263
  ### Terminal UI
237
264
 
@@ -244,6 +271,10 @@ Retention is bounded to the most recent 20 turns, restore paths are revalidated,
244
271
  - Masked provider setup and health diagnostics.
245
272
  - Telemetry consent controls through `/telemetry status|enable|disable`.
246
273
  - Optional image attachments for multimodal providers.
274
+ - `/export` writes a fully self-contained branded HTML report of the conversation
275
+ (offline fonts, collapsible tool rows, per-message and copy-all buttons).
276
+ - Edit diffs tint added lines 50% neon green and removed lines 50% neon red, with a
277
+ `[-N/+M]` add/remove counter beside the copy button.
247
278
 
248
279
  ### SDK and runtime
249
280
 
@@ -266,7 +297,8 @@ Commands can be entered with `/`; aliases are shown in parentheses. Some command
266
297
  | `/help` (`/h`, `/?`) | Show command help and tips |
267
298
  | `/new` (`/clear`, `/reset`) | Start a fresh conversation |
268
299
  | `/history` (`/chats`) | Browse and resume previous sessions |
269
- | `/copy` (`/export`) | Copy the complete conversation |
300
+ | `/copy` (`/copy-chat`) | Copy the complete conversation to the clipboard |
301
+ | `/export` (`/save`) | Write a self-contained branded HTML report of the conversation |
270
302
  | `/interview` | Create a structured specification |
271
303
  | `/plan` | Create an implementation plan |
272
304
  | `/review` | Review code changes |
@@ -278,6 +310,7 @@ Commands can be entered with `/`; aliases are shown in parentheses. Some command
278
310
  | `/health` (`/status`, `/check`) | Check provider, Ollama, model, and permission status |
279
311
  | `/diagnostics` (`/diag`, `/processes`) | Show local process and resource diagnostics |
280
312
  | `/provider` | Configure a hosted provider key with masked input |
313
+ | `/mode` | List the four modes and their contracts, or switch: `/mode <name>` or `/mode:<name>` |
281
314
  | `/model` | Select or switch the active model |
282
315
  | `/publish` | Publish agent templates through the Savant backend |
283
316
  | `/feedback` (`/bug`, `/report`) | Open the feedback flow |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "savant-code",
3
- "version": "0.0.18",
3
+ "version": "0.0.20",
4
4
  "description": "Multi-Agent AI Coding Assistant with ECHO Protocol",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Savant Code <founders@savant-code.com>",