scoutline 0.19.1 → 0.19.3
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 +31 -7
- package/dist/capabilities/diagnostics.d.ts +19 -12
- package/dist/capabilities/diagnostics.d.ts.map +1 -1
- package/dist/capabilities/diagnostics.js.map +1 -1
- package/dist/capabilities/quota.d.ts +1 -1
- package/dist/capabilities/quota.d.ts.map +1 -1
- package/dist/commands/doctor.d.ts +63 -7
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +91 -11
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.js +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/availability.d.ts +95 -0
- package/dist/lib/availability.d.ts.map +1 -0
- package/dist/lib/availability.js +103 -0
- package/dist/lib/availability.js.map +1 -0
- package/dist/lib/quota-mapping.d.ts +16 -0
- package/dist/lib/quota-mapping.d.ts.map +1 -1
- package/dist/lib/quota-mapping.js +30 -0
- package/dist/lib/quota-mapping.js.map +1 -1
- package/dist/lib/quota-store.d.ts +1 -1
- package/dist/lib/quota-store.d.ts.map +1 -1
- package/dist/lib/tty.d.ts +18 -0
- package/dist/lib/tty.d.ts.map +1 -1
- package/dist/lib/tty.js +110 -0
- package/dist/lib/tty.js.map +1 -1
- package/dist/providers/linkup/quota.d.ts +11 -7
- package/dist/providers/linkup/quota.d.ts.map +1 -1
- package/dist/providers/linkup/quota.js +12 -8
- package/dist/providers/linkup/quota.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -61,8 +61,8 @@ record API keys in `~/.scoutline/config.json` (mode 0600):
|
|
|
61
61
|
scoutline init
|
|
62
62
|
```
|
|
63
63
|
|
|
64
|
-
The wizard walks you through a provider checklist
|
|
65
|
-
|
|
64
|
+
The wizard walks you through a registry-derived provider checklist
|
|
65
|
+
(all 12 built-in Providers, rendered in registry order — equal
|
|
66
66
|
weight, none pre-checked), takes each key via
|
|
67
67
|
hidden input, and performs a single inline validation probe against an
|
|
68
68
|
ephemeral in-memory environment (the candidate key is never persisted or
|
|
@@ -157,7 +157,7 @@ selected provider does not advertise the capability (for example,
|
|
|
157
157
|
MiniMax does not advertise `repository-exploration` or `reader`) or
|
|
158
158
|
fails at runtime, Scoutline emits a stderr notice and silently
|
|
159
159
|
reroutes to the next eligible configured provider in registry order
|
|
160
|
-
`[zai, minimax, tavily, exa, brave, firecrawl, parallel, perplexity, jina, you]`. Pass `--no-fallback`
|
|
160
|
+
`[zai, minimax, tavily, exa, brave, firecrawl, parallel, perplexity, jina, you, linkup, spider]`. Pass `--no-fallback`
|
|
161
161
|
(or set `SCOUTLINE_NO_FALLBACK=1`) to restore the previous strict
|
|
162
162
|
single-provider, fail-loud behavior for scripting or cost-sensitive
|
|
163
163
|
workflows. See
|
|
@@ -272,7 +272,7 @@ Provider selection, and `doctor`.
|
|
|
272
272
|
| `vision.chart` | Yes | Pending | No | No | No | No | No | No | No | No | No | No | Implemented, pending live conformance |
|
|
273
273
|
| `vision.diff` (image diff) | Yes | No | No | No | No | No | No | No | No | No | No | No | Z.AI-only (never MiniMax-claimable) |
|
|
274
274
|
| `vision.video` | Yes | No | No | No | No | No | No | No | No | No | No | No | Z.AI-only (never MiniMax-claimable) |
|
|
275
|
-
| `quota` | Yes | Yes | Yes | No | Yes | Yes (
|
|
275
|
+
| `quota` | Yes | Yes | Yes | No | Yes | Yes (USD balance) | No | No | Yes (rate-limit telemetry, not spend) | No | Yes (credits) | Yes (credits) | Normalized `QuotaDashboard` (ADR-0001) |
|
|
276
276
|
| `diagnostics` (`doctor`) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Lists every Provider; probes configured |
|
|
277
277
|
| `read` (Reader) | Yes | **No** | Yes | Yes | No | Yes | Yes | No | Yes | Yes | Yes | Yes | Parallel (Extract API), Jina, You.com, Linkup, and Spider.cloud add Reader support |
|
|
278
278
|
| `crawl` | **No** | **No** | Yes | No | No | Yes (async) | No | No | No | No | No | Yes (sync) | Tavily sync; Firecrawl async (resumable after Ctrl-C) |
|
|
@@ -409,6 +409,7 @@ scoutline quota --all-providers # every configured Provider
|
|
|
409
409
|
scoutline doctor # full diagnostics
|
|
410
410
|
scoutline doctor --no-tools # metadata only, no transport
|
|
411
411
|
scoutline doctor --provider minimax # MiniMax connectivity
|
|
412
|
+
scoutline doctor --available # availability-"ok" rows only
|
|
412
413
|
|
|
413
414
|
# Cache - inspect, clear, or prune the local cache
|
|
414
415
|
scoutline cache stats # inventory of both subdirectories (live/expired, per provider and capability)
|
|
@@ -464,9 +465,29 @@ Quota output is a schema-version-1 `QuotaDashboard`:
|
|
|
464
465
|
}
|
|
465
466
|
```
|
|
466
467
|
|
|
467
|
-
Doctor output is a schema-version-
|
|
468
|
+
Doctor output is a schema-version-2 `DiagnosticsReport` listing every built-in
|
|
468
469
|
Provider with its configured state, declared capabilities, probe status, and a
|
|
469
|
-
one-line cache summary under the `cache` field.
|
|
470
|
+
one-line cache summary under the `cache` field. Every provider row also carries
|
|
471
|
+
an `availability` classification with the closed vocabulary
|
|
472
|
+
`ok | exhausted | error | unconfigured`: `exhausted` requires fresh
|
|
473
|
+
quota-snapshot evidence (a capability-relevant category at 0% remaining within
|
|
474
|
+
the 10-minute staleness gate) regardless of the probe outcome — a probe error
|
|
475
|
+
with fresh 0% evidence is `exhausted`, and a missing snapshot never fabricates
|
|
476
|
+
exhaustion. Rows are ordered healthy-first (`ok`, then `exhausted`, then
|
|
477
|
+
`error`, then `unconfigured`; same-class rows keep registry order), and the
|
|
478
|
+
top-level `availableProviders` array lists the `ok` providers in registry
|
|
479
|
+
order.
|
|
480
|
+
|
|
481
|
+
In an interactive terminal (the `tty` output mode), doctor renders the same
|
|
482
|
+
report as a human-friendly summary instead of JSON: a header with the
|
|
483
|
+
effective provider plus `capabilityMatrix`, routing, and cache summaries
|
|
484
|
+
(omitted when absent — never rendered as `undefined`), followed by every
|
|
485
|
+
provider row in the same healthy-first order. Each row carries an
|
|
486
|
+
availability glyph and label (`✓ ok`, `⚠ exhausted`, `✗ error`,
|
|
487
|
+
`· unconfigured`), the probe status, and snapshot source/age lines
|
|
488
|
+
(`quota snapshot · fresh (2m ago)` / `stale · non-authoritative`). Agents
|
|
489
|
+
capturing stdout and `data`/`json` modes keep the byte-identical JSON
|
|
490
|
+
payload — the summary is presentation-only.
|
|
470
491
|
|
|
471
492
|
## Notes
|
|
472
493
|
|
|
@@ -478,7 +499,10 @@ one-line cache summary under the `cache` field.
|
|
|
478
499
|
- `quota --all-providers` exits 1 if any configured Provider fails; successful
|
|
479
500
|
entries are still reported.
|
|
480
501
|
- `doctor` exits 1 when the effective Provider is unconfigured or any
|
|
481
|
-
configured probe fails; successful entries are still reported.
|
|
502
|
+
configured probe fails; successful entries are still reported. The
|
|
503
|
+
healthy-first row ordering never changes exit codes. `--available` filters
|
|
504
|
+
the `providers` array to the `availability: "ok"` rows; the
|
|
505
|
+
`availableProviders` summary is unchanged by the filter.
|
|
482
506
|
- `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.
|
|
483
507
|
- 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).
|
|
484
508
|
- 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).
|
|
@@ -63,10 +63,12 @@ export interface ProviderDiagnostic {
|
|
|
63
63
|
* available (a snapshot read is a local state read, not transport).
|
|
64
64
|
*
|
|
65
65
|
* Doctor NEVER live-probes quota — it only reads the snapshot. The
|
|
66
|
-
* `source` is
|
|
67
|
-
* `
|
|
68
|
-
*
|
|
69
|
-
*
|
|
66
|
+
* `source` is `"snapshot"` only when the Provider advertises the
|
|
67
|
+
* `quota` capability AND the snapshot holds a real entry
|
|
68
|
+
* (`observedAt > 0`) for it; anything else — no `quota` capability,
|
|
69
|
+
* no snapshot entry, or a bare scaffold entry (`observedAt: 0`) —
|
|
70
|
+
* is `"none"`. Additive under schema version 2: pre-PB-T5 callers
|
|
71
|
+
* that omit the dependency produce entries without this field.
|
|
70
72
|
*/
|
|
71
73
|
readonly quota?: ProviderDiagnosticQuota;
|
|
72
74
|
/**
|
|
@@ -84,22 +86,27 @@ export interface ProviderDiagnostic {
|
|
|
84
86
|
* Plan B). A structural view of PB-T1's snapshot entry for this
|
|
85
87
|
* Provider: never carries categories (Doctor is observational; full
|
|
86
88
|
* categories belong to the `quota` command). Doctor never live-probes
|
|
87
|
-
* quota, so the source is
|
|
88
|
-
*
|
|
89
|
+
* quota, so the source is `"snapshot"` only when the Provider
|
|
90
|
+
* advertises `quota` and the snapshot holds a real entry for it
|
|
91
|
+
* (`observedAt > 0`); otherwise `"none"`.
|
|
89
92
|
*/
|
|
90
93
|
export interface ProviderDiagnosticQuota {
|
|
91
94
|
/**
|
|
92
|
-
* `"snapshot"` — read from PB-T1's `state.json
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
95
|
+
* `"snapshot"` — read from PB-T1's `state.json`, and only when the
|
|
96
|
+
* Provider advertises the `quota` capability and the entry is a
|
|
97
|
+
* real observation (`observedAt > 0`). `"none"` — the Provider does
|
|
98
|
+
* not advertise `quota`, the snapshot has no entry for it, or the
|
|
99
|
+
* entry is a bare scaffold (`observedAt: 0` — created but never
|
|
100
|
+
* observed). Doctor never emits `"live"`; the live probe belongs
|
|
96
101
|
* to the `quota` command, not Doctor.
|
|
97
102
|
*/
|
|
98
103
|
readonly source: "snapshot" | "none";
|
|
99
104
|
/**
|
|
100
105
|
* Epoch-ms the snapshot was observed. Omitted when `source` is
|
|
101
|
-
* `"none"
|
|
102
|
-
*
|
|
106
|
+
* `"none"` (including the scaffold case — an `observedAt: 0`
|
|
107
|
+
* scaffold is never surfaced as an observation). Freshness is
|
|
108
|
+
* judged solely from `observedAt` — never from
|
|
109
|
+
* `locallyUpdatedAt` (PB-T2's local decrement never resets the
|
|
103
110
|
* staleness clock).
|
|
104
111
|
*/
|
|
105
112
|
readonly observedAt?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/capabilities/diagnostics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAChG,OAAO,EAAkB,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAM3E,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACrD,QAAQ,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,CAAC;IACtD,QAAQ,CAAC,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,kBAAkB,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9E
|
|
1
|
+
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/capabilities/diagnostics.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/capabilities/diagnostics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAGH,OAAO,EAAE,cAAc,EAA2B,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/capabilities/diagnostics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAGH,OAAO,EAAE,cAAc,EAA2B,MAAM,kBAAkB,CAAC;AA2J3E,8EAA8E;AAC9E,wCAAwC;AACxC,EAAE;AACF,6DAA6D;AAC7D,qEAAqE;AACrE,iEAAiE;AACjE,gEAAgE;AAChE,sBAAsB;AACtB,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,sBAAsB,CACpC,WAA0C;IAE1C,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAEvD,qEAAqE;IACrE,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;IAEhE,+DAA+D;IAC/D,qEAAqE;IACrE,uBAAuB;IACvB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC3C,MAAM,OAAO,GAAyB,EAAE,CAAC;IACzC,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;QACjC,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACd,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IAED,gEAAgE;IAChE,oBAAoB;IACpB,MAAM,GAAG,GAA8B,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACzD,MAAM,SAAS,GAAiB,EAAE,CAAC;QACnC,cAAc,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YACpC,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjB,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;gBACtC,IAAI,UAAU,EAAE,CAAC;oBACf,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;gBAChC,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,KAAK,CACb,uDAAuD,KAAK,6DAA6D,GAAG,GAAG,CAChI,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAA0B,EAAE,CAAC;IAC3F,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAAc;IAKrD,MAAM,IAAI,GACR,KAAK,YAAY,cAAc,CAAC,CAAC,CAAE,KAAK,CAAC,IAA2B,CAAC,CAAC,CAAC,eAAe,CAAC;IACzF,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,MAAM,MAAM,GAAiE;QAC3E,IAAI;QACJ,OAAO;KACR,CAAC;IACF,IAAI,KAAK,YAAY,cAAc,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QAClD,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IAC3B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quota.d.ts","sourceRoot":"","sources":["../../src/capabilities/quota.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAkB,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAM3E,MAAM,WAAW,WAAW;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"quota.d.ts","sourceRoot":"","sources":["../../src/capabilities/quota.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAkB,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAM3E,MAAM,WAAW,WAAW;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,KAAK,CAAC;IAChD,OAAO,EAAE,WAAW,CAAC;IACrB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,UAAU,CAAC;IACrB,MAAM,EAAE,IAAI,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC;CACzC;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,UAAU,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE;QAAE,IAAI,EAAE,kBAAkB,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACrE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;CAClC;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC;IACrC,mEAAmE;IACnE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B;;;;;;;;OAQG;IACH,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,CAAC,CAAC;IACjB,iBAAiB,EAAE,UAAU,CAAC;IAC9B,SAAS,EAAE,KAAK,CAAC,oBAAoB,GAAG,oBAAoB,GAAG,iBAAiB,CAAC,CAAC;CACnF;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC;CACzC;AAMD;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAkDD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,GAAG,WAAW,CAmDvE;AAMD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,GAAG,oBAAoB,CAahG"}
|
|
@@ -18,9 +18,10 @@
|
|
|
18
18
|
* evaluation and constructs no Adapter and no transport (FR-034).
|
|
19
19
|
*/
|
|
20
20
|
import type { CommandResult } from "../command-invocation.js";
|
|
21
|
-
import type { DiagnosticsReport, ProviderVerificationSummary } from "../capabilities/diagnostics.js";
|
|
21
|
+
import type { DiagnosticsReport, ProviderDiagnostic, ProviderVerificationSummary } from "../capabilities/diagnostics.js";
|
|
22
22
|
import type { ProviderDescriptor, ProviderId } from "../providers/types.js";
|
|
23
23
|
import type { VerificationPromotionStore } from "../lib/config-store.js";
|
|
24
|
+
import { type ProviderAvailability } from "../lib/availability.js";
|
|
24
25
|
import { type QuotaState } from "../lib/quota-store.js";
|
|
25
26
|
export interface DoctorDiagnosticsDependencies {
|
|
26
27
|
readonly noTools: boolean;
|
|
@@ -103,6 +104,39 @@ export interface DoctorDiagnosticsDependencies {
|
|
|
103
104
|
* `quotaSnapshot` is supplied.
|
|
104
105
|
*/
|
|
105
106
|
readonly thresholdMs?: number;
|
|
107
|
+
/**
|
|
108
|
+
* When `true` (`--available`), the report's `providers` array is
|
|
109
|
+
* filtered to rows whose `availability` is `"ok"`. The
|
|
110
|
+
* `availableProviders` short list is computed BEFORE the filter and
|
|
111
|
+
* is unchanged by it, so the full diagnostic picture (who is
|
|
112
|
+
* exhausted, who errored) survives via the classification summary
|
|
113
|
+
* even in filtered mode. Availability classification itself always
|
|
114
|
+
* runs on every row, filtered or not.
|
|
115
|
+
*/
|
|
116
|
+
readonly availableOnly?: boolean;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* A {@link ProviderDiagnostic} row carrying the additive `availability`
|
|
120
|
+
* classification (#94). Additive under DiagnosticsReport schema
|
|
121
|
+
* version 2 (the documented PB-T5 additive-without-bump policy): the
|
|
122
|
+
* field is always present on rows built by
|
|
123
|
+
* {@link buildDiagnosticsReport}; older consumers that read the plain
|
|
124
|
+
* {@link ProviderDiagnostic} shape ignore it.
|
|
125
|
+
*/
|
|
126
|
+
export interface ProviderDiagnosticWithAvailability extends ProviderDiagnostic {
|
|
127
|
+
readonly availability: ProviderAvailability;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* The {@link DiagnosticsReport} shape built by
|
|
131
|
+
* {@link buildDiagnosticsReport}: every provider row carries
|
|
132
|
+
* `availability` and the report carries `availableProviders` — the ids
|
|
133
|
+
* whose row availability is `"ok"`, in registry order (#94). Additive
|
|
134
|
+
* under schema version 2; older consumers reading the plain
|
|
135
|
+
* {@link DiagnosticsReport} shape are unaffected.
|
|
136
|
+
*/
|
|
137
|
+
export interface DiagnosticsReportWithAvailability extends DiagnosticsReport {
|
|
138
|
+
readonly providers: readonly ProviderDiagnosticWithAvailability[];
|
|
139
|
+
readonly availableProviders: readonly ProviderId[];
|
|
106
140
|
}
|
|
107
141
|
/**
|
|
108
142
|
* Build a schema-version-2 {@link DiagnosticsReport}. Inventory
|
|
@@ -121,8 +155,17 @@ export interface DoctorDiagnosticsDependencies {
|
|
|
121
155
|
* Doctor never live-probes quota — it only reads the snapshot. The
|
|
122
156
|
* `quota` field appears even under `--no-tools` (snapshot reads are
|
|
123
157
|
* local state, not transport).
|
|
158
|
+
*
|
|
159
|
+
* #94: every entry carries an `availability` classification
|
|
160
|
+
* (`ok` | `exhausted` | `error` | `unconfigured`), the rows are
|
|
161
|
+
* ordered healthy-first (class rank, then registry order — stable),
|
|
162
|
+
* and the report carries `availableProviders` (the ok rows in registry
|
|
163
|
+
* order). `deps.availableOnly` (`--available`) filters the rows array
|
|
164
|
+
* to the ok rows; `availableProviders` is unchanged by the filter.
|
|
165
|
+
* Additive under schema version 2 — see
|
|
166
|
+
* {@link DiagnosticsReportWithAvailability}.
|
|
124
167
|
*/
|
|
125
|
-
export declare function buildDiagnosticsReport(deps: DoctorDiagnosticsDependencies): Promise<
|
|
168
|
+
export declare function buildDiagnosticsReport(deps: DoctorDiagnosticsDependencies): Promise<DiagnosticsReportWithAvailability>;
|
|
126
169
|
/**
|
|
127
170
|
* Compute the doctor exit code from a finalized report. Exit 1 when the
|
|
128
171
|
* effective Provider is unconfigured or any configured probe errored;
|
|
@@ -135,17 +178,30 @@ export interface DoctorOptions {
|
|
|
135
178
|
}
|
|
136
179
|
/**
|
|
137
180
|
* Injectable dependencies for the doctor command. `buildReport` resolves
|
|
138
|
-
* the diagnostics report; the command only wraps
|
|
139
|
-
* exit-code selection.
|
|
181
|
+
* the availability-carrying diagnostics report; the command only wraps
|
|
182
|
+
* it for presentation and exit-code selection.
|
|
140
183
|
*/
|
|
141
184
|
export interface DoctorCommandDependencies {
|
|
142
|
-
readonly buildReport: () => Promise<
|
|
185
|
+
readonly buildReport: () => Promise<DiagnosticsReportWithAvailability>;
|
|
186
|
+
/**
|
|
187
|
+
* Optional clock for the TTY presentation's snapshot-age labels
|
|
188
|
+
* (T5 — #95). Defaults to `Date.now` — the same clock pattern the
|
|
189
|
+
* report builder's `now` uses; tests inject a fixed clock for
|
|
190
|
+
* deterministic age labels.
|
|
191
|
+
*/
|
|
192
|
+
readonly now?: () => number;
|
|
143
193
|
}
|
|
144
194
|
/**
|
|
145
195
|
* Run the doctor command. Returns the diagnostics report as base data
|
|
146
196
|
* with a computed exit code (1 when the effective Provider is
|
|
147
|
-
* unconfigured or any configured probe failed; otherwise 0).
|
|
197
|
+
* unconfigured or any configured probe failed; otherwise 0). T5 (#95):
|
|
198
|
+
* the result also carries a TTY presentation override —
|
|
199
|
+
* {@link formatDiagnosticsReport} rendered against the injected clock —
|
|
200
|
+
* so terminal (`tty` output mode) runs get the human-friendly
|
|
201
|
+
* healthy-first summary while the data payload itself stays
|
|
202
|
+
* byte-identical (the tty string is presentation-only and never enters
|
|
203
|
+
* `data`).
|
|
148
204
|
*/
|
|
149
|
-
export declare function doctor(deps: DoctorCommandDependencies): Promise<CommandResult<
|
|
205
|
+
export declare function doctor(deps: DoctorCommandDependencies): Promise<CommandResult<DiagnosticsReportWithAvailability>>;
|
|
150
206
|
export declare const DOCTOR_HELP: string;
|
|
151
207
|
//# sourceMappingURL=doctor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAEV,iBAAiB,
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/doctor.js
CHANGED
|
@@ -21,7 +21,9 @@ import { deriveCapabilityMatrix, diagnosticErrorFromError } from "../capabilitie
|
|
|
21
21
|
import { executeProviderOperation } from "../lib/execution.js";
|
|
22
22
|
import { UnsupportedCapabilityError } from "../lib/errors.js";
|
|
23
23
|
import { redactSecrets, configuredSecrets } from "../lib/redact.js";
|
|
24
|
+
import { AVAILABILITY_CLASS_RANK, classifyAvailability, compareAvailabilityRows, } from "../lib/availability.js";
|
|
24
25
|
import { DEFAULT_QUOTA_STALE_THRESHOLD_MS, isQuotaSnapshotStale, } from "../lib/quota-store.js";
|
|
26
|
+
import { formatDiagnosticsReport } from "../lib/tty.js";
|
|
25
27
|
function nodeMajor() {
|
|
26
28
|
const [major] = process.versions.node.split(".");
|
|
27
29
|
return parseInt(major ?? "0", 10);
|
|
@@ -60,6 +62,15 @@ async function probeProvider(descriptor, env, sleep, random) {
|
|
|
60
62
|
* Doctor never live-probes quota — it only reads the snapshot. The
|
|
61
63
|
* `quota` field appears even under `--no-tools` (snapshot reads are
|
|
62
64
|
* local state, not transport).
|
|
65
|
+
*
|
|
66
|
+
* #94: every entry carries an `availability` classification
|
|
67
|
+
* (`ok` | `exhausted` | `error` | `unconfigured`), the rows are
|
|
68
|
+
* ordered healthy-first (class rank, then registry order — stable),
|
|
69
|
+
* and the report carries `availableProviders` (the ok rows in registry
|
|
70
|
+
* order). `deps.availableOnly` (`--available`) filters the rows array
|
|
71
|
+
* to the ok rows; `availableProviders` is unchanged by the filter.
|
|
72
|
+
* Additive under schema version 2 — see
|
|
73
|
+
* {@link DiagnosticsReportWithAvailability}.
|
|
63
74
|
*/
|
|
64
75
|
export async function buildDiagnosticsReport(deps) {
|
|
65
76
|
const secrets = configuredSecrets(deps.env);
|
|
@@ -74,11 +85,21 @@ export async function buildDiagnosticsReport(deps) {
|
|
|
74
85
|
// once per Provider. Both are pure lookups against injected state
|
|
75
86
|
// (snapshot/config records), never transport. Returned as a side
|
|
76
87
|
// table so the probe branches can attach them without re-reading.
|
|
88
|
+
const descriptorById = new Map(deps.descriptors.map((descriptor) => [descriptor.id, descriptor]));
|
|
77
89
|
const quotaFor = (provider) => {
|
|
78
90
|
if (!deps.quotaSnapshot)
|
|
79
91
|
return undefined;
|
|
92
|
+
// #92 — the quota block must be honest. A Provider that does not
|
|
93
|
+
// advertise the `quota` capability has no provider ground-truth to
|
|
94
|
+
// report, and a bare scaffold entry (`observedAt: 0`) was never
|
|
95
|
+
// observed. Both — and a missing entry — collapse to the same
|
|
96
|
+
// `{ source: "none", authoritative: false }` shape (no `observedAt`).
|
|
97
|
+
const descriptor = descriptorById.get(provider);
|
|
80
98
|
const snapshot = deps.quotaSnapshot.quota[provider];
|
|
81
|
-
if (!
|
|
99
|
+
if (!descriptor ||
|
|
100
|
+
!descriptor.capabilities().has("quota") ||
|
|
101
|
+
!snapshot ||
|
|
102
|
+
snapshot.observedAt === 0) {
|
|
82
103
|
return { source: "none", authoritative: false };
|
|
83
104
|
}
|
|
84
105
|
return {
|
|
@@ -88,7 +109,7 @@ export async function buildDiagnosticsReport(deps) {
|
|
|
88
109
|
};
|
|
89
110
|
};
|
|
90
111
|
const verificationFor = (provider) => deps.verificationRecords?.[provider];
|
|
91
|
-
const
|
|
112
|
+
const probed = deps.noTools
|
|
92
113
|
? baseEntries.map((entry) => ({
|
|
93
114
|
...entry,
|
|
94
115
|
status: "skipped",
|
|
@@ -99,6 +120,30 @@ export async function buildDiagnosticsReport(deps) {
|
|
|
99
120
|
: {}),
|
|
100
121
|
}))
|
|
101
122
|
: await probeEntries(baseEntries, deps, secrets, quotaFor, verificationFor);
|
|
123
|
+
// #94 — attach the availability classification to EVERY row (probe
|
|
124
|
+
// and --no-tools paths alike). Pure state reads: the freshness gate
|
|
125
|
+
// and the capability-relevant 0% evidence come from the injected
|
|
126
|
+
// snapshot; there is no transport here. A missing snapshot entry
|
|
127
|
+
// never fabricates exhaustion. Tools-disabled rows take the same
|
|
128
|
+
// snapshot rule (the gate is absence of evidence, not the flag);
|
|
129
|
+
// not-configured rows are `unconfigured`.
|
|
130
|
+
const withAvailability = probed.map((row) => ({
|
|
131
|
+
...row,
|
|
132
|
+
availability: classifyAvailability(row, deps.quotaSnapshot?.quota[row.provider], now),
|
|
133
|
+
}));
|
|
134
|
+
// #94 — `availableProviders` is the ok subset in REGISTRY order,
|
|
135
|
+
// computed from the pre-sort rows (which are in descriptor order) so
|
|
136
|
+
// the contract is registry-order-by-construction, not sort-order.
|
|
137
|
+
const availableProviders = withAvailability
|
|
138
|
+
.filter((row) => row.availability === "ok")
|
|
139
|
+
.map((row) => row.provider);
|
|
140
|
+
// #94 — healthy-first ordering (D7): primary key the availability
|
|
141
|
+
// class (ok < exhausted < error < unconfigured), secondary the
|
|
142
|
+
// registry rank; the sort is stable so same-class rows keep
|
|
143
|
+
// registry order. The same-status registry-order pins hold because
|
|
144
|
+
// the reordering only crosses class boundaries.
|
|
145
|
+
const registryRankById = new Map(deps.descriptors.map((descriptor, index) => [descriptor.id, index]));
|
|
146
|
+
const sorted = withAvailability.sort((a, b) => compareAvailabilityRows(a, b, (row) => AVAILABILITY_CLASS_RANK[row.availability], (row) => registryRankById.get(row.provider) ?? Number.MAX_SAFE_INTEGER));
|
|
102
147
|
// T3b — verification promotion (review item 10). After a successful
|
|
103
148
|
// probe, flip the matching Provider's `verification.status` from
|
|
104
149
|
// `unverified` to `verified`. Best-effort: a write failure is
|
|
@@ -106,10 +151,12 @@ export async function buildDiagnosticsReport(deps) {
|
|
|
106
151
|
// probe into a Doctor failure. Only `status: "ok"` records are
|
|
107
152
|
// promotable; skipped, failed, no-tools, and network-deferred
|
|
108
153
|
// records are not (the probe result is authoritative). Awaited so a
|
|
109
|
-
// subsequent read after Doctor completion is deterministic.
|
|
154
|
+
// subsequent read after Doctor completion is deterministic. Runs
|
|
155
|
+
// over the sorted UNFILTERED rows so `--available` never suppresses
|
|
156
|
+
// a promotion that a successful probe earned.
|
|
110
157
|
if (deps.verificationPromoter) {
|
|
111
158
|
const checkedAt = now;
|
|
112
|
-
for (const entry of
|
|
159
|
+
for (const entry of sorted) {
|
|
113
160
|
if (entry.status !== "ok")
|
|
114
161
|
continue;
|
|
115
162
|
try {
|
|
@@ -123,6 +170,11 @@ export async function buildDiagnosticsReport(deps) {
|
|
|
123
170
|
}
|
|
124
171
|
}
|
|
125
172
|
}
|
|
173
|
+
// #94 — `--available` filters the ROWS only; `availableProviders`
|
|
174
|
+
// (computed above, pre-filter) is unchanged by it.
|
|
175
|
+
const providers = deps.availableOnly
|
|
176
|
+
? sorted.filter((row) => row.availability === "ok")
|
|
177
|
+
: sorted;
|
|
126
178
|
// L1 fix: the cache summary is formatted by the CLI handler and
|
|
127
179
|
// threaded through deps.cacheSummary. The report builder only embeds
|
|
128
180
|
// it; it never reads `cacheStats()` itself.
|
|
@@ -139,6 +191,7 @@ export async function buildDiagnosticsReport(deps) {
|
|
|
139
191
|
visionMcpCompatible: nodeMajor() >= 22,
|
|
140
192
|
},
|
|
141
193
|
providers,
|
|
194
|
+
availableProviders,
|
|
142
195
|
...(cache !== undefined ? { cache } : {}),
|
|
143
196
|
};
|
|
144
197
|
}
|
|
@@ -213,13 +266,21 @@ export function doctorExitCode(report) {
|
|
|
213
266
|
/**
|
|
214
267
|
* Run the doctor command. Returns the diagnostics report as base data
|
|
215
268
|
* with a computed exit code (1 when the effective Provider is
|
|
216
|
-
* unconfigured or any configured probe failed; otherwise 0).
|
|
269
|
+
* unconfigured or any configured probe failed; otherwise 0). T5 (#95):
|
|
270
|
+
* the result also carries a TTY presentation override —
|
|
271
|
+
* {@link formatDiagnosticsReport} rendered against the injected clock —
|
|
272
|
+
* so terminal (`tty` output mode) runs get the human-friendly
|
|
273
|
+
* healthy-first summary while the data payload itself stays
|
|
274
|
+
* byte-identical (the tty string is presentation-only and never enters
|
|
275
|
+
* `data`).
|
|
217
276
|
*/
|
|
218
277
|
export async function doctor(deps) {
|
|
219
278
|
const report = await deps.buildReport();
|
|
279
|
+
const now = (deps.now ?? Date.now)();
|
|
220
280
|
return {
|
|
221
281
|
kind: "data",
|
|
222
282
|
data: report,
|
|
283
|
+
presentations: { tty: formatDiagnosticsReport(report, now) },
|
|
223
284
|
exitCode: doctorExitCode(report),
|
|
224
285
|
};
|
|
225
286
|
}
|
|
@@ -253,22 +314,36 @@ capabilityMatrix field reflects that descriptor state
|
|
|
253
314
|
(repository-exploration currently lists only Z.AI while MiniMax and
|
|
254
315
|
Tavily lack it).
|
|
255
316
|
|
|
256
|
-
Reader is a Provider Capability. Z.AI, Tavily, Exa,
|
|
257
|
-
and Spider.cloud descriptor metadata
|
|
258
|
-
Brave, and Perplexity advertise and
|
|
259
|
-
capabilityMatrix field lists Z.AI, Tavily, Exa,
|
|
260
|
-
Spider.cloud for
|
|
317
|
+
Reader is a Provider Capability. Z.AI, Tavily, Exa, Firecrawl,
|
|
318
|
+
Parallel, Jina, You.com, Linkup, and Spider.cloud descriptor metadata
|
|
319
|
+
all advertise reader; MiniMax, Brave, and Perplexity advertise and
|
|
320
|
+
supply neither. The capabilityMatrix field lists Z.AI, Tavily, Exa,
|
|
321
|
+
Firecrawl, Parallel, Jina, You.com, Linkup, and Spider.cloud for
|
|
322
|
+
reader.
|
|
261
323
|
|
|
262
324
|
Crawl and Map are Provider Capabilities owned by Tavily, Firecrawl,
|
|
263
325
|
and Spider.cloud. Z.AI, MiniMax, Exa, and Brave do not advertise
|
|
264
326
|
either; the capabilityMatrix lists Tavily, Firecrawl, and Spider.cloud
|
|
265
327
|
for each. Research is
|
|
266
|
-
supplied by Tavily, Exa, Parallel, Perplexity,
|
|
328
|
+
supplied by Tavily, Exa, Parallel, Perplexity, Jina, You.com, and
|
|
329
|
+
Linkup. By default (0.11.0+) Provider fallback
|
|
267
330
|
emits a stderr notice and silently reroutes to the next eligible
|
|
268
331
|
configured supplier when a non-supplier is selected; under
|
|
269
332
|
--no-fallback (or SCOUTLINE_NO_FALLBACK=1) the preflight surfaces
|
|
270
333
|
UNSUPPORTED_CAPABILITY for the selected non-supplier.
|
|
271
334
|
|
|
335
|
+
Availability and ordering: every provider row carries an
|
|
336
|
+
availability field with the closed vocabulary
|
|
337
|
+
"ok" | "exhausted" | "error" | "unconfigured". "exhausted" requires
|
|
338
|
+
fresh quota-snapshot evidence (a capability-relevant category at 0%
|
|
339
|
+
remaining within the 10-minute staleness gate) regardless of the
|
|
340
|
+
probe outcome — a probe error with fresh 0% evidence is "exhausted",
|
|
341
|
+
and a missing snapshot never fabricates exhaustion. Rows are
|
|
342
|
+
ordered healthy-first: ok, then exhausted, then error, then
|
|
343
|
+
unconfigured; same-class rows keep registry order (stable). The
|
|
344
|
+
availableProviders field lists the availability-"ok" providers in
|
|
345
|
+
registry order. Exit codes are unchanged by the ordering.
|
|
346
|
+
|
|
272
347
|
Public 'repo' and 'read' commands participate in Provider selection.
|
|
273
348
|
They honour --provider / SCOUTLINE_PROVIDER / the default zai, route
|
|
274
349
|
through the matching Adapter's Repository / Reader Capability, and
|
|
@@ -286,6 +361,10 @@ Options:
|
|
|
286
361
|
--no-tools no Provider transport is constructed: a
|
|
287
362
|
configured Provider is reported as skipped
|
|
288
363
|
(tools-disabled) and does not fail the report.
|
|
364
|
+
--available Filter the providers array to availability-"ok" rows
|
|
365
|
+
(the agent-facing short list). availableProviders is
|
|
366
|
+
unchanged by the filter, and every row was still
|
|
367
|
+
classified before filtering.
|
|
289
368
|
|
|
290
369
|
Exit codes:
|
|
291
370
|
0 All configured probes succeeded (or only tools-disabled skips).
|
|
@@ -296,5 +375,6 @@ Examples:
|
|
|
296
375
|
scoutline doctor # full diagnostics
|
|
297
376
|
scoutline doctor --provider minimax
|
|
298
377
|
scoutline doctor --no-tools # metadata only, no transport
|
|
378
|
+
scoutline doctor --available # healthy rows only
|
|
299
379
|
`.trim();
|
|
300
380
|
//# sourceMappingURL=doctor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAUH,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAClG,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGpE,OAAO,EACL,gCAAgC,EAChC,oBAAoB,GAErB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.js
CHANGED
|
@@ -83,9 +83,9 @@ The fresh flow:
|
|
|
83
83
|
- offers to import a provider key already present in env (the
|
|
84
84
|
wizard notes that env precedence means the env value keeps
|
|
85
85
|
winning at runtime)
|
|
86
|
-
- shows
|
|
87
|
-
|
|
88
|
-
equal weight
|
|
86
|
+
- shows the registry-derived provider checklist (all 12 built-in
|
|
87
|
+
Providers, rendered in registry order) with NO pre-checked
|
|
88
|
+
defaults — every provider has equal weight
|
|
89
89
|
- for each selected provider, asks whether you have a key, takes a
|
|
90
90
|
hidden input, and performs a single inline validation probe
|
|
91
91
|
against an ephemeral in-memory environment (the candidate
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1938,6 +1938,11 @@ async function handleDoctor(args, outputMode, deps) {
|
|
|
1938
1938
|
return 0;
|
|
1939
1939
|
}
|
|
1940
1940
|
const noTools = flags["no-tools"] === true;
|
|
1941
|
+
// #94 — `--available` filters the report's providers array to
|
|
1942
|
+
// availability-"ok" rows. The filter itself lives in
|
|
1943
|
+
// buildDiagnosticsReport (availableOnly); only the flag parse
|
|
1944
|
+
// happens here.
|
|
1945
|
+
const availableOnly = flags["available"] === true;
|
|
1941
1946
|
// Resolve the effective Provider ID for report metadata, mirroring
|
|
1942
1947
|
// Search/Vision/quota. Descriptors are intentionally NOT passed here so
|
|
1943
1948
|
// the report always lists every built-in Provider even when the
|
|
@@ -1952,6 +1957,7 @@ async function handleDoctor(args, outputMode, deps) {
|
|
|
1952
1957
|
return invokeCommand(deps.invocation, () => doctor({
|
|
1953
1958
|
buildReport: () => buildDiagnosticsReport({
|
|
1954
1959
|
noTools,
|
|
1960
|
+
availableOnly,
|
|
1955
1961
|
effectiveProvider,
|
|
1956
1962
|
descriptors: deps.providerDescriptors,
|
|
1957
1963
|
env: deps.env,
|