scoutline 0.15.0 → 0.16.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 +68 -11
- package/dist/capabilities/repository.d.ts +96 -0
- package/dist/capabilities/repository.d.ts.map +1 -1
- package/dist/capabilities/repository.js.map +1 -1
- package/dist/commands/cache.d.ts +38 -0
- package/dist/commands/cache.d.ts.map +1 -1
- package/dist/commands/cache.js +64 -5
- package/dist/commands/cache.js.map +1 -1
- package/dist/commands/config.d.ts +17 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +25 -2
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/repo.d.ts +96 -1
- package/dist/commands/repo.d.ts.map +1 -1
- package/dist/commands/repo.js +420 -0
- package/dist/commands/repo.js.map +1 -1
- package/dist/commands/search.d.ts +150 -0
- package/dist/commands/search.d.ts.map +1 -1
- package/dist/commands/search.js +368 -27
- package/dist/commands/search.js.map +1 -1
- package/dist/index.d.ts +199 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +352 -20
- package/dist/index.js.map +1 -1
- package/dist/lib/cache.d.ts +111 -7
- package/dist/lib/cache.d.ts.map +1 -1
- package/dist/lib/cache.js +316 -7
- package/dist/lib/cache.js.map +1 -1
- package/dist/lib/config-store.d.ts +51 -1
- package/dist/lib/config-store.d.ts.map +1 -1
- package/dist/lib/config-store.js +90 -6
- package/dist/lib/config-store.js.map +1 -1
- package/dist/lib/url.d.ts +43 -0
- package/dist/lib/url.d.ts.map +1 -0
- package/dist/lib/url.js +172 -0
- package/dist/lib/url.js.map +1 -0
- package/dist/providers/selection.d.ts +21 -0
- package/dist/providers/selection.d.ts.map +1 -1
- package/dist/providers/selection.js +58 -0
- package/dist/providers/selection.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -163,6 +163,48 @@ for the rationale
|
|
|
163
163
|
and the accepted async double-charge risk on `crawl` / `map` /
|
|
164
164
|
`research`.
|
|
165
165
|
|
|
166
|
+
### Search Fan-Out (multi-provider search)
|
|
167
|
+
|
|
168
|
+
For `search` only, one query can run across several providers in parallel
|
|
169
|
+
and merge into a single deduplicated list
|
|
170
|
+
([ADR-0004](https://github.com/vikasagarwal101/scoutline/blob/main/docs/adr/0004-multi-provider-search-fanout.md)).
|
|
171
|
+
Activation tiers, highest precedence first:
|
|
172
|
+
|
|
173
|
+
1. `--provider tavily,exa` (comma list) or `--provider all` — fan-out on
|
|
174
|
+
the listed providers; `all` expands to every configured search
|
|
175
|
+
provider in registry order.
|
|
176
|
+
2. A single `--provider <id>` or `SCOUTLINE_PROVIDER` — single provider;
|
|
177
|
+
an explicit pin, fan-out is ignored.
|
|
178
|
+
3. `scoutline config set fanout true` (no pin) — fan-out on
|
|
179
|
+
`routing.search` when set, else every configured search provider.
|
|
180
|
+
Default is **false**; remove the standing switch with
|
|
181
|
+
`scoutline config unset fanout`.
|
|
182
|
+
4. No pin and fan-out off — single provider via the standard selection
|
|
183
|
+
order.
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
scoutline --provider tavily,exa search "rust async runtimes"
|
|
187
|
+
scoutline --provider all search "AI policy news"
|
|
188
|
+
scoutline config set fanout true # standing preference (default off)
|
|
189
|
+
scoutline config unset fanout # remove the standing switch
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
**Cost:** every search will bill ALL configured search providers — N arms
|
|
193
|
+
= N billable calls (when `routing.search` is set, only the eligible
|
|
194
|
+
routed providers — configured and search-capable — are billed;
|
|
195
|
+
`config set fanout true` names exactly those). Arms run in parallel (one client each,
|
|
196
|
+
pinned — no per-arm fallback); a provider that rejects a search control
|
|
197
|
+
drops with a stderr notice and never fails the invocation. Results are
|
|
198
|
+
deduplicated by canonical URL identity (scheme/host lowercased, default
|
|
199
|
+
ports, fragments, trailing slashes, and `utm_*`/`fbclid` parameters
|
|
200
|
+
removed — tracking names are matched after percent-decoding, the raw path
|
|
201
|
+
and userinfo are preserved, and the original URLs are kept in output),
|
|
202
|
+
ranked by cross-provider occurrences, and each result carries `mergedFrom`
|
|
203
|
+
listing the providers that returned it. `--merge` composes with fan-out:
|
|
204
|
+
every arm runs every sub-query and occurrences span the arms ×
|
|
205
|
+
sub-queries grid. Disable the standing switch with
|
|
206
|
+
`scoutline config set fanout false`.
|
|
207
|
+
|
|
166
208
|
## Capability Matrix
|
|
167
209
|
|
|
168
210
|
The matrix below is generated from the production provider registry
|
|
@@ -189,7 +231,7 @@ Provider selection, and `doctor`.
|
|
|
189
231
|
| `crawl` | **No** | **No** | Yes | No | No | Yes (async) | No | No | No | Tavily sync; Firecrawl async (resumable after Ctrl-C) |
|
|
190
232
|
| `map` | **No** | **No** | Yes | No | No | Yes | No | No | No | URL-set discovery; no per-page content |
|
|
191
233
|
| `research` | **No** | **No** | Yes | Yes | **No** | **No** | Yes | Yes | Yes | Tavily, Exa, Parallel, Perplexity `sonar-deep-research`, and Jina DeepSearch report synthesis |
|
|
192
|
-
| `repo search` / `repo read` / `repo tree` | Yes | **No** | **No** | **No** | **No** | **No** | **No** | **No** | **No** | Participates in selection; only Z.AI supplies `repository-exploration` |
|
|
234
|
+
| `repo search` / `repo read` / `repo tree` / `repo brief` | Yes | **No** | **No** | **No** | **No** | **No** | **No** | **No** | **No** | Participates in selection; only Z.AI supplies `repository-exploration` |
|
|
193
235
|
| `tools`, `tool`, `call` (Raw tools) | Yes | No | No | No | No | No | No | No | No | Z.AI-only; accepts but ignores `--provider` |
|
|
194
236
|
| `code` (Code Mode) | Yes | No | No | No | No | No | No | No | No | Z.AI-only; accepts but ignores `--provider` |
|
|
195
237
|
|
|
@@ -277,7 +319,7 @@ scoutline search --help # Search options
|
|
|
277
319
|
scoutline repo --help # GitHub repo commands
|
|
278
320
|
scoutline doctor --help # Provider diagnostics
|
|
279
321
|
scoutline quota --help # Plan usage
|
|
280
|
-
scoutline cache --help # Local cache inspection and
|
|
322
|
+
scoutline cache --help # Local cache inspection, clearing, and pruning
|
|
281
323
|
```
|
|
282
324
|
|
|
283
325
|
### Examples
|
|
@@ -307,6 +349,8 @@ scoutline repo search vercel/next.js "app router"
|
|
|
307
349
|
scoutline repo read anthropics/anthropic-sdk-python README.md
|
|
308
350
|
scoutline repo search openai/codex "config" --language en
|
|
309
351
|
scoutline repo tree openai/codex --path codex-rs --depth 2
|
|
352
|
+
scoutline repo brief facebook/react
|
|
353
|
+
scoutline repo brief openai/codex --focus readme,manifest --max-chars 2000
|
|
310
354
|
|
|
311
355
|
# Quota - effective or all providers
|
|
312
356
|
scoutline quota # effective Provider
|
|
@@ -317,9 +361,11 @@ scoutline doctor # full diagnostics
|
|
|
317
361
|
scoutline doctor --no-tools # metadata only, no transport
|
|
318
362
|
scoutline doctor --provider minimax # MiniMax connectivity
|
|
319
363
|
|
|
320
|
-
# Cache - inspect or
|
|
321
|
-
scoutline cache stats #
|
|
364
|
+
# Cache - inspect, clear, or prune the local cache
|
|
365
|
+
scoutline cache stats # inventory of both subdirectories (live/expired, per provider and capability)
|
|
322
366
|
scoutline cache clear # delete every file under cache/ and tools/
|
|
367
|
+
scoutline cache prune # delete expired entries (effective TTL threshold)
|
|
368
|
+
scoutline cache prune --older-than 168h --provider zai # age override + selectors (AND together)
|
|
323
369
|
|
|
324
370
|
# Config - inspect and change settings (scriptable, always redacted)
|
|
325
371
|
scoutline config get # full config dump (credentials masked)
|
|
@@ -366,6 +412,9 @@ one-line cache summary under the `cache` field.
|
|
|
366
412
|
|
|
367
413
|
- `repo search` defaults to English results. Use `--language zh` for Chinese.
|
|
368
414
|
- `repo tree` supports `--path` (directory scope) and `--depth` (expand subtrees).
|
|
415
|
+
- `repo brief` composes tree + search + read into one schema-version-1
|
|
416
|
+
`RepositoryBrief` envelope; `--focus` subsets the sealed set
|
|
417
|
+
`structure, readme, manifest, files` (default all four).
|
|
369
418
|
- `quota --all-providers` exits 1 if any configured Provider fails; successful
|
|
370
419
|
entries are still reported.
|
|
371
420
|
- `doctor` exits 1 when the effective Provider is unconfigured or any
|
|
@@ -373,14 +422,14 @@ one-line cache summary under the `cache` field.
|
|
|
373
422
|
- `read` returns a schema-version-1 envelope (content read or extract read) in every output mode. `--with-images-summary`, `--no-gfm`, and `--keep-img-data-url` are passed through to the Provider request. `--max-chars` is ignored on extract reads; `--full-envelope` is silently deprecated.
|
|
374
423
|
- Vision tool calls automatically retry transient 5xx/network errors (default: 2 retries). Configure with `ZAI_MCP_VISION_RETRY_COUNT` (or `ZAI_MCP_RETRY_COUNT` for all tools).
|
|
375
424
|
- Tool discovery can be cached to speed `tools`/`tool`/`doctor` (default: on, 24h TTL). The cache shares the unified root with the response cache; configure both via `SCOUTLINE_CACHE`, `SCOUTLINE_CACHE_TTL_MS`, `SCOUTLINE_CACHE_SIZE_MB`, and `SCOUTLINE_CACHE_DIR` (legacy aliases `ZAI_MCP_TOOL_CACHE*`, `ZAI_MCP_CACHE_DIR`, and `ZAI_CACHE*` are accepted silently).
|
|
376
|
-
- The local cache lives at `~/.scoutline/` (`cache/` for responses, `tools/` for tool discovery) on every platform. Inspect or
|
|
425
|
+
- The local cache lives at `~/.scoutline/` (`cache/` for responses, `tools/` for tool discovery) on every platform. Inspect, clear, or prune it with `scoutline cache stats`, `scoutline cache clear`, and `scoutline cache prune`. Prune deletes expired entries by their stored timestamp (`--older-than <24h|90m|30s|seconds>` replaces the TTL threshold; `--provider`/`--capability` narrow the response scan to v2 filenames — the tool cache is unpartitioned and is always scanned age-only).
|
|
377
426
|
|
|
378
427
|
## Repository Exploration (P6)
|
|
379
428
|
|
|
380
|
-
`scoutline repo search`, `scoutline repo read`,
|
|
381
|
-
participate in `--provider` selection. Z.AI
|
|
382
|
-
`repository-exploration` Capability and supplies it through
|
|
383
|
-
Repository Adapter. MiniMax and the other built-in Providers do not
|
|
429
|
+
`scoutline repo search`, `scoutline repo read`, `scoutline repo tree`, and
|
|
430
|
+
`scoutline repo brief` participate in `--provider` selection. Z.AI
|
|
431
|
+
advertises the `repository-exploration` Capability and supplies it through
|
|
432
|
+
the Z.AI Repository Adapter. MiniMax and the other built-in Providers do not
|
|
384
433
|
advertise it; by default (0.11.0+) Scoutline emits a stderr notice and
|
|
385
434
|
auto-reroutes to Z.AI. Under `--no-fallback` the preflight surfaces
|
|
386
435
|
`UNSUPPORTED_CAPABILITY` for the selected non-supplier before descriptor
|
|
@@ -390,8 +439,8 @@ the previous strict single-provider behavior.
|
|
|
390
439
|
|
|
391
440
|
### Breaking data-mode migration (v0.2 → v1)
|
|
392
441
|
|
|
393
|
-
The
|
|
394
|
-
every output mode. This is an intentional breaking change from the v0.2 raw
|
|
442
|
+
The `repo search`, `read`, `tree`, and `brief` successes return
|
|
443
|
+
**schema-version-1 structured values** in every output mode. This is an intentional breaking change from the v0.2 raw
|
|
395
444
|
Search/File strings and the depth-dependent raw Tree shape:
|
|
396
445
|
|
|
397
446
|
| Command | v0.2 (legacy, now obsolete) | v1 (current) |
|
|
@@ -399,6 +448,7 @@ Search/File strings and the depth-dependent raw Tree shape:
|
|
|
399
448
|
| `repo search` | Raw ZRead text with `<excerpt>` blocks | `{schemaVersion, repository, query, language, excerpts:[{text}], truncated, originalTextLength}` |
|
|
400
449
|
| `repo read` | Raw `<file_content>…</file_content>` body | `{schemaVersion, repository, path, content, truncated, originalContentLength}` |
|
|
401
450
|
| `repo tree` | `<structure>` block (depth 1 returned split/deep routes) | `{schemaVersion, repository, path, depth, snapshots:[{repository, path, entries:[{name, path, kind}]}]}` (structured at every depth, including depth 1) |
|
|
451
|
+
| `repo brief` | — (new command) | `{schemaVersion, repository, focus, coverage:{probes}, tree?, docs?, entryPoints?, files?:[{path, content, truncated, originalContentLength}], detected:{hasReadme, hasManifest, manifestKinds}}` (sections gated by `--focus`; `coverage` and `detected` always present) |
|
|
402
452
|
|
|
403
453
|
`data` mode emits the exact object above. `json` and `pretty` wrap it through
|
|
404
454
|
the standard success envelope. Text-oriented modes (`compact`, `markdown`,
|
|
@@ -431,6 +481,8 @@ projection applied to the normalized result after caching.
|
|
|
431
481
|
Provider order; the final retained excerpt is truncated and later excerpts
|
|
432
482
|
are omitted.
|
|
433
483
|
- `repo tree` → never character-limited.
|
|
484
|
+
- `repo brief` → forwarded verbatim to every search and read call (per-call
|
|
485
|
+
budget); the tree probe is never character-limited.
|
|
434
486
|
- Metadata, JSON envelopes, and Tree snapshots are not part of the budget.
|
|
435
487
|
|
|
436
488
|
### Empty results
|
|
@@ -456,6 +508,11 @@ never rewritten, migrated, or deleted. `--no-cache` performs no reads or
|
|
|
456
508
|
writes. Injected credentials drive the fingerprint and legacy-key
|
|
457
509
|
construction; ambient `process.env` is never reread.
|
|
458
510
|
|
|
511
|
+
`repo brief` is never cached as a unit: its probes reuse the per-operation
|
|
512
|
+
entries above, so a warm re-run still invokes the Explorer operations but
|
|
513
|
+
makes no new provider transport calls, and still produces byte-identical
|
|
514
|
+
output.
|
|
515
|
+
|
|
459
516
|
### Errors and lifecycle
|
|
460
517
|
|
|
461
518
|
Encoded MCP error envelopes are recognized before success parsing:
|
|
@@ -126,6 +126,102 @@ export interface RepositoryTreeResult {
|
|
|
126
126
|
readonly depth: number;
|
|
127
127
|
readonly snapshots: readonly RepositoryDirectoryListing[];
|
|
128
128
|
}
|
|
129
|
+
/**
|
|
130
|
+
* Sealed v1 probe set. Opening the set later is additive.
|
|
131
|
+
*/
|
|
132
|
+
export type RepoBriefFocus = "structure" | "readme" | "manifest" | "files";
|
|
133
|
+
/**
|
|
134
|
+
* Canonical kind set, in canonical priority order (used for cap-4 read
|
|
135
|
+
* selection; see DESIGN D1, D7). The README is always selected first
|
|
136
|
+
* when present; the manifests below are selected in this order.
|
|
137
|
+
*/
|
|
138
|
+
export type RepoManifestKind = "package.json" | "pyproject.toml" | "Cargo.toml" | "go.mod";
|
|
139
|
+
/**
|
|
140
|
+
* One record per Explorer call the brief attempted, in execution
|
|
141
|
+
* order. The label set is a closed vocabulary for stable consumer
|
|
142
|
+
* interpretation: `"tree"` for the tree probe; `"search:readme"` and
|
|
143
|
+
* `"search:manifest"` for the two search probes; `"read:<path>"` for
|
|
144
|
+
* each read probe (path is the repository-relative POSIX path that
|
|
145
|
+
* was requested); and the sentinel `"read:<files>"` for a read stage
|
|
146
|
+
* that ran no per-path probe (always `skipped` — see `reason`).
|
|
147
|
+
*/
|
|
148
|
+
export interface RepoBriefProbeRecord {
|
|
149
|
+
readonly kind: "tree" | "search" | "read";
|
|
150
|
+
readonly label: string;
|
|
151
|
+
/**
|
|
152
|
+
* ok — probe ran and returned a normalized result.
|
|
153
|
+
* failed — probe ran and threw; `error` is set.
|
|
154
|
+
* skipped — probe did not run: focus-excluded, dependency-failed,
|
|
155
|
+
* or no-selection (read stage requested, but the
|
|
156
|
+
* tree-derived selection was empty).
|
|
157
|
+
*/
|
|
158
|
+
readonly status: "ok" | "failed" | "skipped";
|
|
159
|
+
readonly error?: {
|
|
160
|
+
readonly code: string;
|
|
161
|
+
readonly message: string;
|
|
162
|
+
};
|
|
163
|
+
readonly reason?: "focus-excluded" | "dependency-failed" | "no-selection";
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Coverage section of the brief envelope. `probes` is total and
|
|
167
|
+
* ordered: one terminal record per Explorer call the brief attempted,
|
|
168
|
+
* plus one `read:<files>` sentinel record whenever the read stage ran
|
|
169
|
+
* no per-path probe — the stage was skipped (focus-excluded), its
|
|
170
|
+
* selection input failed (dependency-failed), or it was requested but
|
|
171
|
+
* the tree-derived selection was empty (no-selection). Consumers can
|
|
172
|
+
* therefore always read the read stage's outcome from `coverage`,
|
|
173
|
+
* never by inferring from missing records.
|
|
174
|
+
*/
|
|
175
|
+
export interface RepoBriefCoverage {
|
|
176
|
+
readonly probes: readonly RepoBriefProbeRecord[];
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Evidence entry: a selected key file, content verbatim from the
|
|
180
|
+
* normalized File result (path + truncation metadata unchanged).
|
|
181
|
+
*/
|
|
182
|
+
export interface RepoBriefFileEntry {
|
|
183
|
+
readonly path: string;
|
|
184
|
+
readonly content: string;
|
|
185
|
+
readonly truncated: boolean;
|
|
186
|
+
readonly originalContentLength: number;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Tree-derived booleans. `null` means the tree probe failed or was
|
|
190
|
+
* focus-excluded — never guessed from search excerpts.
|
|
191
|
+
*/
|
|
192
|
+
export interface RepoBriefDetected {
|
|
193
|
+
readonly hasReadme: boolean | null;
|
|
194
|
+
readonly hasManifest: boolean | null;
|
|
195
|
+
readonly manifestKinds: readonly RepoManifestKind[] | null;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* The brief envelope. `schemaVersion` is literally `1`; no
|
|
199
|
+
* timestamp, no randomness, no environment-derived fields
|
|
200
|
+
* (byte-determinism; see DESIGN D2). Field presence is governed by
|
|
201
|
+
* the presence matrix in SCHEMA.md.
|
|
202
|
+
*/
|
|
203
|
+
export interface RepositoryBrief {
|
|
204
|
+
readonly schemaVersion: 1;
|
|
205
|
+
/** "owner/repo" as validated by `validateRepo`. */
|
|
206
|
+
readonly repository: string;
|
|
207
|
+
/** Requested focus, validated against the sealed set, order preserved. */
|
|
208
|
+
readonly focus: readonly RepoBriefFocus[];
|
|
209
|
+
readonly coverage: RepoBriefCoverage;
|
|
210
|
+
/** Present iff `structure` ∈ focus AND the tree probe succeeded. */
|
|
211
|
+
readonly tree?: RepositoryTreeResult;
|
|
212
|
+
/** Present iff `readme` ∈ focus AND search:readme succeeded. */
|
|
213
|
+
readonly docs?: RepositorySearchResult;
|
|
214
|
+
/** Present iff `manifest` ∈ focus AND search:manifest succeeded. */
|
|
215
|
+
readonly entryPoints?: RepositorySearchResult;
|
|
216
|
+
/**
|
|
217
|
+
* Present iff `files` ∈ focus AND tree `ok` AND ≥1 selected read
|
|
218
|
+
* succeeded. Order: README first, then manifests in canonical
|
|
219
|
+
* kind order.
|
|
220
|
+
*/
|
|
221
|
+
readonly files?: readonly RepoBriefFileEntry[];
|
|
222
|
+
/** Always present; fields null when their derivation input is missing. */
|
|
223
|
+
readonly detected: RepoBriefDetected;
|
|
224
|
+
}
|
|
129
225
|
/**
|
|
130
226
|
* Provider-owned legacy cache candidate. Old Z.AI keys encode the
|
|
131
227
|
* raw v0.2 tool response; the Adapter supplies the decoder so shared
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../src/capabilities/repository.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../src/capabilities/repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../src/capabilities/repository.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;
|
|
1
|
+
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../src/capabilities/repository.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/cache.d.ts
CHANGED
|
@@ -49,6 +49,26 @@ export interface CacheClearReport {
|
|
|
49
49
|
readonly toolsCleared: number;
|
|
50
50
|
readonly bytesFreed: number;
|
|
51
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* Mirror of {@link PruneCachesResult} in `src/lib/cache.ts`. Counts
|
|
54
|
+
* reflect actual deletions performed during the prune run.
|
|
55
|
+
*/
|
|
56
|
+
export interface CachePruneReport {
|
|
57
|
+
readonly prunedResponses: number;
|
|
58
|
+
readonly prunedTools: number;
|
|
59
|
+
readonly bytesFreed: number;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Selectors narrowing a prune run. All optional and AND together;
|
|
63
|
+
* mirrors {@link PruneSelectors} from `src/lib/cache.ts` (DESIGN D2/D3).
|
|
64
|
+
* The dispatcher parses `--older-than`/`--provider`/`--capability` into
|
|
65
|
+
* this shape and passes it to the production `pruneCaches`.
|
|
66
|
+
*/
|
|
67
|
+
export interface CachePruneSelectors {
|
|
68
|
+
readonly olderThanMs?: number;
|
|
69
|
+
readonly provider?: string;
|
|
70
|
+
readonly capability?: string;
|
|
71
|
+
}
|
|
52
72
|
/**
|
|
53
73
|
* Format a byte count as e.g. `"12.3 MB"`, `"8.2 KB"`, `"510 B"`. Used
|
|
54
74
|
* by `cache stats` presentation and by Doctor's one-line summary. Pure:
|
|
@@ -71,6 +91,11 @@ export declare function formatCacheStats(stats: CacheStatsReport): string;
|
|
|
71
91
|
* Format a clear result as a one-line TTY notice.
|
|
72
92
|
*/
|
|
73
93
|
export declare function formatCacheClear(result: CacheClearReport): string;
|
|
94
|
+
/**
|
|
95
|
+
* Format a prune result as a one-line TTY notice. Same voice as
|
|
96
|
+
* {@link formatCacheClear} (cleared vs pruned is the only swap).
|
|
97
|
+
*/
|
|
98
|
+
export declare function formatCachePrune(result: CachePruneReport): string;
|
|
74
99
|
/**
|
|
75
100
|
* Format the one-line Doctor cache summary from a `cacheStats()` value.
|
|
76
101
|
* The dispatcher calls this before invoking `buildDiagnosticsReport`;
|
|
@@ -90,6 +115,9 @@ export interface CacheStatsDependencies {
|
|
|
90
115
|
export interface CacheClearDependencies {
|
|
91
116
|
readonly clear: () => Promise<CacheClearReport>;
|
|
92
117
|
}
|
|
118
|
+
export interface CachePruneDependencies {
|
|
119
|
+
readonly prune: (selectors: CachePruneSelectors) => Promise<CachePruneReport>;
|
|
120
|
+
}
|
|
93
121
|
/**
|
|
94
122
|
* Run the `cache stats` subcommand. Returns the inventory as base data
|
|
95
123
|
* with a TTY presentation override. Exit code is always 0 on success;
|
|
@@ -102,5 +130,15 @@ export declare function cacheStatsCommand(deps: CacheStatsDependencies): Promise
|
|
|
102
130
|
* override.
|
|
103
131
|
*/
|
|
104
132
|
export declare function cacheClearCommand(deps: CacheClearDependencies): Promise<CommandResult<CacheClearReport>>;
|
|
133
|
+
/**
|
|
134
|
+
* Run the `cache prune` subcommand. Returns the count of pruned
|
|
135
|
+
* entries and bytes freed as base data with a TTY presentation
|
|
136
|
+
* override. Selectors are passed through to `deps.prune` verbatim
|
|
137
|
+
* (the dispatcher parses `--older-than`/`--provider`/`--capability`
|
|
138
|
+
* into this shape). Lock-timeout errors propagate so the
|
|
139
|
+
* dispatcher's error boundary emits the sanitized stderr envelope
|
|
140
|
+
* (DESIGN D5).
|
|
141
|
+
*/
|
|
142
|
+
export declare function cachePruneCommand(deps: CachePruneDependencies, selectors: CachePruneSelectors): Promise<CommandResult<CachePruneReport>>;
|
|
105
143
|
export declare const CACHE_HELP: string;
|
|
106
144
|
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/commands/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAkB,MAAM,0BAA0B,CAAC;AAS9E,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAClF,QAAQ,CAAC,SAAS,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/E;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAMD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAWjD;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAK5C;AAkBD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAmBhE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAMjE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAOxE;AAMD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACpD;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACjD;
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/commands/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAkB,MAAM,0BAA0B,CAAC;AAS9E,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAClF,QAAQ,CAAC,SAAS,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/E;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAMD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAWjD;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAK5C;AAkBD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAmBhE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAMjE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAMjE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAOxE;AAMD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACpD;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,mBAAmB,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAC/E;AAwBD;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAO1C;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAO1C;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,sBAAsB,EAC5B,SAAS,EAAE,mBAAmB,GAC7B,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAO1C;AAED,eAAO,MAAM,UAAU,QA0Df,CAAC"}
|
package/dist/commands/cache.js
CHANGED
|
@@ -111,6 +111,15 @@ export function formatCacheClear(result) {
|
|
|
111
111
|
`and ${result.toolsCleared} tool ${pluralEntry(result.toolsCleared)} ` +
|
|
112
112
|
`(${formatBytes(result.bytesFreed)} freed)`);
|
|
113
113
|
}
|
|
114
|
+
/**
|
|
115
|
+
* Format a prune result as a one-line TTY notice. Same voice as
|
|
116
|
+
* {@link formatCacheClear} (cleared vs pruned is the only swap).
|
|
117
|
+
*/
|
|
118
|
+
export function formatCachePrune(result) {
|
|
119
|
+
return (`Pruned ${result.prunedResponses} response ${pluralEntry(result.prunedResponses)} ` +
|
|
120
|
+
`and ${result.prunedTools} tool ${pluralEntry(result.prunedTools)} ` +
|
|
121
|
+
`(${formatBytes(result.bytesFreed)} freed)`);
|
|
122
|
+
}
|
|
114
123
|
/**
|
|
115
124
|
* Format the one-line Doctor cache summary from a `cacheStats()` value.
|
|
116
125
|
* The dispatcher calls this before invoking `buildDiagnosticsReport`;
|
|
@@ -143,6 +152,11 @@ function clearPresentations(result) {
|
|
|
143
152
|
const text = formatCacheClear(result);
|
|
144
153
|
return { compact: text, markdown: text, refs: text, tty: text };
|
|
145
154
|
}
|
|
155
|
+
/** All text modes share the same one-line prune notice. */
|
|
156
|
+
function prunePresentations(result) {
|
|
157
|
+
const text = formatCachePrune(result);
|
|
158
|
+
return { compact: text, markdown: text, refs: text, tty: text };
|
|
159
|
+
}
|
|
146
160
|
/**
|
|
147
161
|
* Run the `cache stats` subcommand. Returns the inventory as base data
|
|
148
162
|
* with a TTY presentation override. Exit code is always 0 on success;
|
|
@@ -169,12 +183,30 @@ export async function cacheClearCommand(deps) {
|
|
|
169
183
|
presentations: clearPresentations(result),
|
|
170
184
|
};
|
|
171
185
|
}
|
|
186
|
+
/**
|
|
187
|
+
* Run the `cache prune` subcommand. Returns the count of pruned
|
|
188
|
+
* entries and bytes freed as base data with a TTY presentation
|
|
189
|
+
* override. Selectors are passed through to `deps.prune` verbatim
|
|
190
|
+
* (the dispatcher parses `--older-than`/`--provider`/`--capability`
|
|
191
|
+
* into this shape). Lock-timeout errors propagate so the
|
|
192
|
+
* dispatcher's error boundary emits the sanitized stderr envelope
|
|
193
|
+
* (DESIGN D5).
|
|
194
|
+
*/
|
|
195
|
+
export async function cachePruneCommand(deps, selectors) {
|
|
196
|
+
const result = await deps.prune(selectors);
|
|
197
|
+
return {
|
|
198
|
+
kind: "data",
|
|
199
|
+
data: result,
|
|
200
|
+
presentations: prunePresentations(result),
|
|
201
|
+
};
|
|
202
|
+
}
|
|
172
203
|
export const CACHE_HELP = `
|
|
173
|
-
Cache - Inspect
|
|
204
|
+
Cache - Inspect, clear, or prune the local cache
|
|
174
205
|
|
|
175
206
|
Usage:
|
|
176
|
-
scoutline cache stats
|
|
177
|
-
scoutline cache clear
|
|
207
|
+
scoutline cache stats # show inventory of both cache subdirectories
|
|
208
|
+
scoutline cache clear # delete every file in both cache subdirectories
|
|
209
|
+
scoutline cache prune [--older-than <D>] [--provider <id>] [--capability <id>]
|
|
178
210
|
|
|
179
211
|
Subcommands:
|
|
180
212
|
stats Print the cache directory, status (enabled/disabled, TTL, size
|
|
@@ -185,19 +217,46 @@ Subcommands:
|
|
|
185
217
|
directories themselves are preserved so the next invocation
|
|
186
218
|
recreates entries without a directory-creation race. The
|
|
187
219
|
orphaned legacy ~/.cache/zai-cli/ directory is never touched.
|
|
220
|
+
prune Delete expired entries from both caches by stored timestamp
|
|
221
|
+
(DESIGN D1: ts, never mtime). Without flags, prune uses the
|
|
222
|
+
effective TTL; with --older-than, that duration replaces the
|
|
223
|
+
TTL. --provider and --capability narrow the response-cache
|
|
224
|
+
scan to v2 filenames only (DESIGN D2: legacy files are
|
|
225
|
+
age-selected, never selector-selected). --provider may appear
|
|
226
|
+
before or after the command token. Unknown
|
|
227
|
+
--provider/--capability values are NOT pre-validated — they
|
|
228
|
+
filename-match nothing in the response cache, while the
|
|
229
|
+
selector-free tool scan still prunes expired tool entries
|
|
230
|
+
(tool filenames are unpartitioned; DESIGN D4).
|
|
231
|
+
|
|
232
|
+
Duration syntax for --older-than (DESIGN D3): 24h, 90m, 30s, or a bare
|
|
233
|
+
integer (seconds). The value REPLACES the effective TTL. Example:
|
|
234
|
+
--older-than 1h prunes anything older than 1 hour even when the TTL is
|
|
235
|
+
24h.
|
|
188
236
|
|
|
189
237
|
The cache root defaults to ~/.scoutline/ on every platform; override it
|
|
190
238
|
with SCOUTLINE_CACHE_DIR (ZAI_MCP_CACHE_DIR and ZAI_CACHE_DIR are
|
|
191
239
|
accepted as lower-precedence legacy aliases). Disable both caches with
|
|
192
|
-
SCOUTLINE_CACHE=0 (legacy alias: ZAI_CACHE=0).
|
|
240
|
+
SCOUTLINE_CACHE=0 (legacy alias: ZAI_CACHE=0). A disabled cache does
|
|
241
|
+
NOT short-circuit prune: deletion is not a cache read/write (D6). With
|
|
242
|
+
no --older-than under a disabled cache, prune reports zeros (TTL of 0
|
|
243
|
+
means "no freshness rule", not "delete everything").
|
|
193
244
|
|
|
194
245
|
Exit codes:
|
|
195
246
|
0 Success.
|
|
196
|
-
1
|
|
247
|
+
1 Validation error (bad or valueless --older-than / --provider /
|
|
248
|
+
--capability, unknown subcommand) or I/O error including a
|
|
249
|
+
cache-write lock timeout (DESIGN D5: the prune scan serializes on
|
|
250
|
+
the response-dir lock a concurrent write holds; a lock-acquire
|
|
251
|
+
timeout throws and is reported as a sanitized FILE_ERROR JSON
|
|
252
|
+
error envelope).
|
|
197
253
|
|
|
198
254
|
Examples:
|
|
199
255
|
scoutline cache stats
|
|
200
256
|
scoutline cache clear
|
|
257
|
+
scoutline cache prune
|
|
258
|
+
scoutline cache prune --older-than 1h
|
|
259
|
+
scoutline cache prune --older-than 24h --provider zai --capability search
|
|
201
260
|
scoutline cache --help
|
|
202
261
|
`.trim();
|
|
203
262
|
//# sourceMappingURL=cache.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/commands/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/commands/cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* registry layer (API keys never ride argv, AGENTS.md).
|
|
15
15
|
*/
|
|
16
16
|
import type { CommandResult } from "../command-invocation.js";
|
|
17
|
-
import { type ScoutlineConfig } from "../lib/config-store.js";
|
|
17
|
+
import { type FanoutNoticeContext, type ScoutlineConfig } from "../lib/config-store.js";
|
|
18
18
|
export interface ConfigGetDependencies {
|
|
19
19
|
/** Read the current config (production: `readConfig`). */
|
|
20
20
|
readonly read: () => Promise<ScoutlineConfig>;
|
|
@@ -24,6 +24,22 @@ export interface ConfigGetDependencies {
|
|
|
24
24
|
export interface ConfigSetDependencies {
|
|
25
25
|
/** Strict set (production: `setConfigValue`). */
|
|
26
26
|
readonly set: (path: string, value: string) => Promise<ScoutlineConfig>;
|
|
27
|
+
/**
|
|
28
|
+
* Success-path notice channel (production: the invocation context's
|
|
29
|
+
* `notice`, stderr). Used for registry-mandated warnings like the
|
|
30
|
+
* fan-out cost sentence (search-fanout DESIGN D7) — visible in every
|
|
31
|
+
* output mode while stdout stays data-only. Optional so presentation
|
|
32
|
+
* doubles stay minimal.
|
|
33
|
+
*/
|
|
34
|
+
readonly notify?: (message: string) => void;
|
|
35
|
+
/**
|
|
36
|
+
* Eligibility context (env + provider registry) the fan-out cost
|
|
37
|
+
* notice needs to name only the routed providers that would actually
|
|
38
|
+
* bill — the same arm set `resolveFanoutPlan` computes (review fix,
|
|
39
|
+
* PR #36). Optional: without it the notice falls back to the blanket
|
|
40
|
+
* sentence instead of naming raw routing entries.
|
|
41
|
+
*/
|
|
42
|
+
readonly noticeContext?: FanoutNoticeContext;
|
|
27
43
|
}
|
|
28
44
|
export interface ConfigUnsetDependencies {
|
|
29
45
|
/** Unset (production: `unsetConfigValue`). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAkB,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,wBAAwB,CAAC;AAQhC,MAAM,WAAW,qBAAqB;IACpC,0DAA0D;IAC1D,QAAQ,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,eAAe,CAAC,CAAC;IAC9C,wFAAwF;IACxF,QAAQ,CAAC,OAAO,EAAE,MAAM,MAAM,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,qBAAqB;IACpC,iDAAiD;IACjD,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAkB,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACrB,MAAM,wBAAwB,CAAC;AAQhC,MAAM,WAAW,qBAAqB;IACpC,0DAA0D;IAC1D,QAAQ,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,eAAe,CAAC,CAAC;IAC9C,wFAAwF;IACxF,QAAQ,CAAC,OAAO,EAAE,MAAM,MAAM,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,qBAAqB;IACpC,iDAAiD;IACjD,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IACxE;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C;;;;;;OAMG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,mBAAmB,CAAC;CAC9C;AAED,MAAM,WAAW,uBAAuB;IACtC,8CAA8C;IAC9C,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;CAC5D;AAgDD;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAyBjC;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,aAAa,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC,CAoB1D;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,uBAAuB,GAC5B,OAAO,CAAC,aAAa,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAO1C;AAED,eAAO,MAAM,WAAW,QAsDhB,CAAC"}
|
package/dist/commands/config.js
CHANGED
|
@@ -46,6 +46,8 @@ function valueAtPath(config, path) {
|
|
|
46
46
|
return config.routing?.[trimmed.slice("routing.".length)];
|
|
47
47
|
if (trimmed === "fallbackEnabled")
|
|
48
48
|
return config.fallbackEnabled;
|
|
49
|
+
if (trimmed === "fanout")
|
|
50
|
+
return config.fanout;
|
|
49
51
|
const providerMatch = /^providers\.([a-z0-9-]+)(?:\.[A-Za-z0-9-]+)*$/.exec(trimmed);
|
|
50
52
|
if (providerMatch?.[1])
|
|
51
53
|
return config.providers[providerMatch[1]];
|
|
@@ -78,7 +80,7 @@ export async function configGetCommand(path, deps) {
|
|
|
78
80
|
// silent "(not set)"; other unknown paths list the valid roots.
|
|
79
81
|
throw path.trim().startsWith("routing.")
|
|
80
82
|
? unknownConfigKeyError(path)
|
|
81
|
-
: new ValidationError(`Unknown config key "${path}".`, 'Valid keys: routing, routing.<capability>, fallbackEnabled, providers.<id>. Run "scoutline config --help".');
|
|
83
|
+
: new ValidationError(`Unknown config key "${path}".`, 'Valid keys: routing, routing.<capability>, fallbackEnabled, fanout, providers.<id>. Run "scoutline config --help".');
|
|
82
84
|
}
|
|
83
85
|
const raw = valueAtPath(config, path);
|
|
84
86
|
const redacted = redactSecrets(raw ?? null, secrets);
|
|
@@ -95,6 +97,18 @@ export async function configGetCommand(path, deps) {
|
|
|
95
97
|
export async function configSetCommand(path, value, deps) {
|
|
96
98
|
const updated = await deps.set(path, value);
|
|
97
99
|
const raw = valueAtPath(updated, path);
|
|
100
|
+
// Registry-mandated enable-time warning (fan-out cost sentence, D7):
|
|
101
|
+
// emitted as a stderr notice so it reaches every output mode while
|
|
102
|
+
// stdout stays data-only. The registry supplies the sentence for the
|
|
103
|
+
// UPDATED config plus the eligibility context — with `routing.search`
|
|
104
|
+
// set it names only the routed arms that are ELIGIBLE (configured ∩
|
|
105
|
+
// search-capable, the same set `resolveFanoutPlan` computes) instead
|
|
106
|
+
// of claiming ALL configured providers or naming raw routing entries
|
|
107
|
+
// that would not bill (review fix, PR #36).
|
|
108
|
+
const key = resolveConfigKey(path);
|
|
109
|
+
if (key?.setTrueNotice !== undefined && raw === true) {
|
|
110
|
+
deps.notify?.(key.setTrueNotice(updated, deps.noticeContext));
|
|
111
|
+
}
|
|
98
112
|
return {
|
|
99
113
|
kind: "data",
|
|
100
114
|
data: { path: path.trim(), value: raw },
|
|
@@ -126,6 +140,12 @@ Keys:
|
|
|
126
140
|
routing.<capability> Ordered provider list for one capability.
|
|
127
141
|
Example: scoutline config set routing.search tavily,brave
|
|
128
142
|
fallbackEnabled true|false — the always-on provider fallback switch.
|
|
143
|
+
fanout true|false — the multi-provider search fan-out
|
|
144
|
+
switch (default false; enabling warns about the
|
|
145
|
+
billable cost — every configured search provider,
|
|
146
|
+
or the routing.search subset when routed).
|
|
147
|
+
Remove the standing switch with
|
|
148
|
+
\`scoutline config unset fanout\`.
|
|
129
149
|
providers.<id> Provider configuration (view only; credential
|
|
130
150
|
values are always masked).
|
|
131
151
|
|
|
@@ -138,7 +158,8 @@ Behaviour:
|
|
|
138
158
|
provider's environment variable (API keys never belong in command
|
|
139
159
|
arguments).
|
|
140
160
|
unset Removes a routing capability (and the table when the last entry
|
|
141
|
-
goes), the whole routing table,
|
|
161
|
+
goes), the whole routing table, the fallbackEnabled switch, or
|
|
162
|
+
the fanout switch.
|
|
142
163
|
|
|
143
164
|
Routing semantics: when no --provider / SCOUTLINE_PROVIDER pin exists,
|
|
144
165
|
the routed list orders provider selection for that capability — the
|
|
@@ -155,7 +176,9 @@ Examples:
|
|
|
155
176
|
scoutline config get routing
|
|
156
177
|
scoutline config set routing.search tavily,brave
|
|
157
178
|
scoutline config set fallbackEnabled false
|
|
179
|
+
scoutline config set fanout true
|
|
158
180
|
scoutline config unset routing.search
|
|
181
|
+
scoutline config unset fanout
|
|
159
182
|
scoutline config --help
|
|
160
183
|
`.trim();
|
|
161
184
|
//# sourceMappingURL=config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EACL,gBAAgB,EAChB,qBAAqB,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
|