truecourse 0.6.0-next.9 → 0.6.1

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 (4) hide show
  1. package/README.md +26 -2
  2. package/cli.mjs +2469 -1496
  3. package/package.json +1 -1
  4. package/server.mjs +2345 -1393
package/README.md CHANGED
@@ -323,7 +323,31 @@ The first `truecourse analyze` (or `truecourse add`) in a fresh repo asks whethe
323
323
  ## Prerequisites
324
324
 
325
325
  - Node.js >= 20
326
- - [Claude Code](https://docs.anthropic.com/en/docs/claude-code) CLI on your PATH. Deterministic rules run without it; LLM-powered rules and the Spec Verify pipeline need it.
326
+ - [Claude Code](https://docs.anthropic.com/en/docs/claude-code) CLI on your PATH — optional. The default `cli` transport spawns it for LLM-powered work; deterministic rules and the `agent` transport (below) don't need it.
327
+
328
+ ## LLM transport (`--llm-transport`)
329
+
330
+ Every LLM-powered step — `analyze`'s LLM rules, and the whole Spec → Verify pipeline (`spec scan`, `spec resolve`, `contracts generate`) — reaches the model through a pluggable **transport**, chosen with `--llm-transport`:
331
+
332
+ | Mode | How it reaches the model | Needs |
333
+ |---|---|---|
334
+ | **`cli`** *(default)* | spawns `claude -p …` per call | the `claude` binary on PATH, signed in. No API key. |
335
+ | **`agent`** | a **filesystem mailbox** under `--io <dir>` | nothing — no `claude` binary, no API key |
336
+
337
+ In **`agent`** mode the tool doesn't call the model itself: for each prompt it writes `requests/<id>.json` (`{ stage, system, user, schema, … }`) into the `--io` directory and waits for a matching `responses/<id>.json` (`{ text }`). An **orchestrating agent that is itself an LLM** — e.g. a [Claude Code routine](https://code.claude.com/docs/en/routines) — watches that directory and answers each prompt. This lets contract generation and `analyze`'s LLM rules run **inside a headless cloud session with no `claude` binary and no API key**.
338
+
339
+ ```bash
340
+ # default: spawn the claude CLI
341
+ truecourse analyze --llm
342
+ truecourse contracts generate
343
+
344
+ # agent transport: the tool parks prompts in ./io and an external agent answers them
345
+ truecourse analyze --llm --llm-transport agent --io ./io
346
+ truecourse spec scan --llm-transport agent --io ./io
347
+ truecourse contracts generate --llm-transport agent --io ./io
348
+ ```
349
+
350
+ Accepted by: `analyze`, `spec scan`, `spec resolve`, `contracts generate`. (On `analyze`, `--llm` / `--no-llm` is a *separate* flag — it decides **whether** LLM rules run; `--llm-transport` decides **how** to reach the model.) Both modes send identical prompts and parse identical schema-validated JSON — only the delivery differs.
327
351
 
328
352
  ## Configuration
329
353
 
@@ -366,7 +390,7 @@ Patterns are anchored to the file's location, so `src/generated/` matches the to
366
390
 
367
391
  ## Telemetry
368
392
 
369
- TrueCourse collects anonymous usage data (event type, language, file count range, OS) to improve the product. No source code, file paths, or violation details are collected. It is automatically disabled in CI environments.
393
+ TrueCourse collects anonymous usage data to improve the product — one event per command (`analyze`, `spec_scan`, `contracts_generate`, `verify`, `infer`), each carrying only coarse, bucketed counts (file/artifact/drift/decision *ranges*, duration range), the surface (CLI vs dashboard), OS, and tool version. No source code, file paths, identities, or violation/drift details are collected. It is automatically disabled in CI environments.
370
394
 
371
395
  ```bash
372
396
  truecourse telemetry status # Check telemetry status