scoutline 0.11.0 → 0.12.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 +27 -0
- package/dist/capabilities/diagnostics.d.ts +75 -0
- package/dist/capabilities/diagnostics.d.ts.map +1 -1
- package/dist/capabilities/diagnostics.js.map +1 -1
- package/dist/capabilities/quota.d.ts +64 -1
- package/dist/capabilities/quota.d.ts.map +1 -1
- package/dist/capabilities/quota.js.map +1 -1
- package/dist/commands/code.d.ts +9 -1
- package/dist/commands/code.d.ts.map +1 -1
- package/dist/commands/code.js +4 -4
- package/dist/commands/code.js.map +1 -1
- package/dist/commands/doctor.d.ts +71 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +81 -5
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.d.ts +186 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +1221 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/quota.d.ts +32 -0
- package/dist/commands/quota.d.ts.map +1 -1
- package/dist/commands/quota.js +165 -24
- package/dist/commands/quota.js.map +1 -1
- package/dist/commands/tools.d.ts +8 -0
- package/dist/commands/tools.d.ts.map +1 -1
- package/dist/commands/tools.js +4 -4
- package/dist/commands/tools.js.map +1 -1
- package/dist/commands/vision.d.ts +10 -0
- package/dist/commands/vision.d.ts.map +1 -1
- package/dist/commands/vision.js +23 -1
- package/dist/commands/vision.js.map +1 -1
- package/dist/index.d.ts +125 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +578 -70
- package/dist/index.js.map +1 -1
- package/dist/lib/api-client.d.ts +1 -1
- package/dist/lib/api-client.d.ts.map +1 -1
- package/dist/lib/api-client.js +6 -2
- package/dist/lib/api-client.js.map +1 -1
- package/dist/lib/cache.d.ts +9 -2
- package/dist/lib/cache.d.ts.map +1 -1
- package/dist/lib/cache.js +9 -2
- package/dist/lib/cache.js.map +1 -1
- package/dist/lib/code-mode.d.ts +8 -0
- package/dist/lib/code-mode.d.ts.map +1 -1
- package/dist/lib/code-mode.js +3 -1
- package/dist/lib/code-mode.js.map +1 -1
- package/dist/lib/config-store.d.ts +165 -0
- package/dist/lib/config-store.d.ts.map +1 -0
- package/dist/lib/config-store.js +332 -0
- package/dist/lib/config-store.js.map +1 -0
- package/dist/lib/config.d.ts +2 -2
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +19 -11
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/consumption.d.ts +144 -0
- package/dist/lib/consumption.d.ts.map +1 -0
- package/dist/lib/consumption.js +161 -0
- package/dist/lib/consumption.js.map +1 -0
- package/dist/lib/execution.d.ts +32 -4
- package/dist/lib/execution.d.ts.map +1 -1
- package/dist/lib/execution.js +144 -5
- package/dist/lib/execution.js.map +1 -1
- package/dist/lib/mcp-client.d.ts +12 -0
- package/dist/lib/mcp-client.d.ts.map +1 -1
- package/dist/lib/mcp-client.js +16 -7
- package/dist/lib/mcp-client.js.map +1 -1
- package/dist/lib/mcp-config.d.ts +10 -0
- package/dist/lib/mcp-config.d.ts.map +1 -1
- package/dist/lib/mcp-config.js +13 -7
- package/dist/lib/mcp-config.js.map +1 -1
- package/dist/lib/monitor-client.d.ts +19 -3
- package/dist/lib/monitor-client.d.ts.map +1 -1
- package/dist/lib/monitor-client.js +21 -5
- package/dist/lib/monitor-client.js.map +1 -1
- package/dist/lib/quota-mapping.d.ts +402 -0
- package/dist/lib/quota-mapping.d.ts.map +1 -0
- package/dist/lib/quota-mapping.js +539 -0
- package/dist/lib/quota-mapping.js.map +1 -0
- package/dist/lib/quota-store.d.ts +271 -0
- package/dist/lib/quota-store.d.ts.map +1 -0
- package/dist/lib/quota-store.js +540 -0
- package/dist/lib/quota-store.js.map +1 -0
- package/dist/lib/trigger-detection.d.ts +149 -0
- package/dist/lib/trigger-detection.d.ts.map +1 -0
- package/dist/lib/trigger-detection.js +149 -0
- package/dist/lib/trigger-detection.js.map +1 -0
- package/dist/lib/tty.d.ts +8 -1
- package/dist/lib/tty.d.ts.map +1 -1
- package/dist/lib/tty.js +53 -1
- package/dist/lib/tty.js.map +1 -1
- package/dist/providers/brave/adapter.d.ts +26 -0
- package/dist/providers/brave/adapter.d.ts.map +1 -1
- package/dist/providers/brave/adapter.js +64 -4
- package/dist/providers/brave/adapter.js.map +1 -1
- package/dist/providers/brave/client.d.ts +46 -2
- package/dist/providers/brave/client.d.ts.map +1 -1
- package/dist/providers/brave/client.js +55 -3
- package/dist/providers/brave/client.js.map +1 -1
- package/dist/providers/selection.d.ts +114 -1
- package/dist/providers/selection.d.ts.map +1 -1
- package/dist/providers/selection.js +99 -3
- package/dist/providers/selection.js.map +1 -1
- package/dist/providers/types.d.ts +5 -1
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/providers/types.js.map +1 -1
- package/dist/providers/zai/adapter.d.ts.map +1 -1
- package/dist/providers/zai/adapter.js +14 -5
- package/dist/providers/zai/adapter.js.map +1 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -50,6 +50,33 @@ npx scoutline --provider brave search "AI policy news" --topic news
|
|
|
50
50
|
npx scoutline --provider brave search "rust async" --type video
|
|
51
51
|
```
|
|
52
52
|
|
|
53
|
+
### Interactive Onboarding (`scoutline init`)
|
|
54
|
+
|
|
55
|
+
Instead of exporting environment variables, run the interactive wizard to
|
|
56
|
+
record API keys in `~/.scoutline/config.json` (mode 0600):
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
scoutline init
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
The wizard walks you through a provider checklist (Z.AI, MiniMax, Tavily,
|
|
63
|
+
Exa, Brave, Firecrawl — equal weight, none pre-checked), takes each key via
|
|
64
|
+
hidden input, and performs a single inline validation probe against an
|
|
65
|
+
ephemeral in-memory environment (the candidate key is never persisted or
|
|
66
|
+
written to `process.env` until the final atomic write). It also asks your
|
|
67
|
+
fallback preference and discloses credit costs before any paid probe.
|
|
68
|
+
|
|
69
|
+
If you already have a config, `init` opens a re-config menu (edit a key, add
|
|
70
|
+
or remove a provider, change the fallback preference, re-run the full
|
|
71
|
+
wizard, or cancel). For a corrupt `config.json`, `init` offers to back up
|
|
72
|
+
the live file and rewrite a fresh one — it is the recovery path.
|
|
73
|
+
|
|
74
|
+
Environment variables always take precedence over file keys at runtime
|
|
75
|
+
(`Z_AI_API_KEY` > `ZAI_API_KEY` > file key), so the wizard notes when an
|
|
76
|
+
imported env key will keep overriding the saved key.
|
|
77
|
+
|
|
78
|
+
Run `scoutline init --help` for the full lifecycle and exit-code reference.
|
|
79
|
+
|
|
53
80
|
## Installation
|
|
54
81
|
|
|
55
82
|
### As an Agent Skill
|
|
@@ -52,6 +52,81 @@ export interface ProviderDiagnostic {
|
|
|
52
52
|
message: string;
|
|
53
53
|
help?: string;
|
|
54
54
|
};
|
|
55
|
+
/**
|
|
56
|
+
* Quota snapshot summary for this Provider (PB-T5 — Plan B).
|
|
57
|
+
* Optional: present when the dispatcher threads a quota snapshot
|
|
58
|
+
* through `DoctorDiagnosticsDependencies.quotaSnapshot`. Doctor
|
|
59
|
+
* reports each Provider's quota source (snapshot vs none) +
|
|
60
|
+
* freshness (`observedAt` age; stale → flagged non-authoritative)
|
|
61
|
+
* so a user can correlate a selection pick with the data that drove
|
|
62
|
+
* it. Under `--no-tools` the field still appears when a snapshot is
|
|
63
|
+
* available (a snapshot read is a local state read, not transport).
|
|
64
|
+
*
|
|
65
|
+
* Doctor NEVER live-probes quota — it only reads the snapshot. The
|
|
66
|
+
* `source` is therefore always `"snapshot"` when an entry exists, or
|
|
67
|
+
* `"none"` when the snapshot has no entry for this Provider.
|
|
68
|
+
* Additive under schema version 2: pre-PB-T5 callers that omit the
|
|
69
|
+
* dependency produce entries without this field.
|
|
70
|
+
*/
|
|
71
|
+
readonly quota?: ProviderDiagnosticQuota;
|
|
72
|
+
/**
|
|
73
|
+
* Verification summary mirroring the Provider's Plan A
|
|
74
|
+
* `config.providers[id].verification` record (PB-T5). Optional:
|
|
75
|
+
* present when the dispatcher threads the configured providers'
|
|
76
|
+
* verification records through
|
|
77
|
+
* `DoctorDiagnosticsDependencies.verificationRecords`. Additive under
|
|
78
|
+
* schema version 2: pre-PB-T5 callers produce entries without it.
|
|
79
|
+
*/
|
|
80
|
+
readonly verification?: ProviderVerificationSummary;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Quota summary embedded in a {@link ProviderDiagnostic} (PB-T5 —
|
|
84
|
+
* Plan B). A structural view of PB-T1's snapshot entry for this
|
|
85
|
+
* Provider: never carries categories (Doctor is observational; full
|
|
86
|
+
* categories belong to the `quota` command). Doctor never live-probes
|
|
87
|
+
* quota, so the source is always `"snapshot"` (when an entry exists)
|
|
88
|
+
* or `"none"` (when it does not).
|
|
89
|
+
*/
|
|
90
|
+
export interface ProviderDiagnosticQuota {
|
|
91
|
+
/**
|
|
92
|
+
* `"snapshot"` — read from PB-T1's `state.json`. `"none"` — the
|
|
93
|
+
* snapshot has no entry for this Provider (it may be unconfigured,
|
|
94
|
+
* may not advertise `quota`, or may simply have never been
|
|
95
|
+
* refreshed). Doctor never emits `"live"`; the live probe belongs
|
|
96
|
+
* to the `quota` command, not Doctor.
|
|
97
|
+
*/
|
|
98
|
+
readonly source: "snapshot" | "none";
|
|
99
|
+
/**
|
|
100
|
+
* Epoch-ms the snapshot was observed. Omitted when `source` is
|
|
101
|
+
* `"none"`. Freshness is judged solely from `observedAt` — never
|
|
102
|
+
* from `locallyUpdatedAt` (PB-T2's local decrement never resets the
|
|
103
|
+
* staleness clock).
|
|
104
|
+
*/
|
|
105
|
+
readonly observedAt?: number;
|
|
106
|
+
/**
|
|
107
|
+
* Whether `observedAt` is within the authoritative staleness
|
|
108
|
+
* threshold (`DEFAULT_QUOTA_STALE_THRESHOLD_MS`, 10 min). Always
|
|
109
|
+
* `false` when `source` is `"none"`. Matches the same flag the
|
|
110
|
+
* `quota` command and PB-T4's selection resolver use, so a user can
|
|
111
|
+
* correlate Doctor's "stale" label with a selection pick that was
|
|
112
|
+
* made against the same snapshot.
|
|
113
|
+
*/
|
|
114
|
+
readonly authoritative: boolean;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Verification summary mirroring Plan A's
|
|
118
|
+
* `ProviderVerification` shape (PB-T5). Defined as a structural twin
|
|
119
|
+
* in the capability contract so `capabilities/diagnostics.ts` does
|
|
120
|
+
* not import from `lib/config-store.ts` (the capability contract
|
|
121
|
+
* imports only Provider identity and metadata types and shared
|
|
122
|
+
* errors — see the boundary rules at the top of this module). The
|
|
123
|
+
* dispatcher maps `ProviderVerification → ProviderVerificationSummary`
|
|
124
|
+
* at the report-dependency boundary.
|
|
125
|
+
*/
|
|
126
|
+
export interface ProviderVerificationSummary {
|
|
127
|
+
readonly status: "verified" | "unverified";
|
|
128
|
+
readonly checkedAt: number;
|
|
129
|
+
readonly reason?: string;
|
|
55
130
|
}
|
|
56
131
|
/**
|
|
57
132
|
* One row of the schema-version-2 capability matrix: a capability and
|
|
@@ -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;
|
|
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;AA6I3E,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,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;YACxC,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"}
|
|
@@ -52,6 +52,21 @@ export interface ProviderQuotaSuccess {
|
|
|
52
52
|
* caveat simply omit the field.
|
|
53
53
|
*/
|
|
54
54
|
warnings?: readonly string[];
|
|
55
|
+
/**
|
|
56
|
+
* Source + freshness label (PB-T5 — Plan B). Additive under schema
|
|
57
|
+
* version 1: when omitted (the pre-PB-T5 caller path), the row is a
|
|
58
|
+
* direct live probe whose freshness is implicit (the dashboard was
|
|
59
|
+
* just built). When the dashboard reads PB-T1's snapshot, this field
|
|
60
|
+
* carries the source ("snapshot" vs "live" fallback) and the
|
|
61
|
+
* authoritative flag so a user can correlate a selection pick with
|
|
62
|
+
* the data that drove it without misattributing it to fresher data
|
|
63
|
+
* than it is.
|
|
64
|
+
*
|
|
65
|
+
* Freshness is judged solely from `observedAt` — the snapshot's
|
|
66
|
+
* ground-truth clock — never from `locallyUpdatedAt` (PB-T2's local
|
|
67
|
+
* decrement never resets the staleness clock).
|
|
68
|
+
*/
|
|
69
|
+
readonly quotaSource?: QuotaSourceLabel;
|
|
55
70
|
}
|
|
56
71
|
export interface ProviderQuotaFailure {
|
|
57
72
|
provider: ProviderId;
|
|
@@ -62,10 +77,58 @@ export interface ProviderQuotaFailure {
|
|
|
62
77
|
help?: string;
|
|
63
78
|
};
|
|
64
79
|
}
|
|
80
|
+
/**
|
|
81
|
+
* A configured Provider that advertises no `quota` Capability (PB-T5 —
|
|
82
|
+
* Plan B). Today only Exa matches this row in `all-providers` mode: it
|
|
83
|
+
* is configured and capable inventory, but has no quota endpoint to
|
|
84
|
+
* probe. The dashboard emits this variant with **zero adapter/transport
|
|
85
|
+
* calls** — no descriptor.create(), no quota.invoke(), no fallback to a
|
|
86
|
+
* live probe. The variant is additive under schema version 1: every
|
|
87
|
+
* existing consumer (TTY renderer, exit-code computation, warnings
|
|
88
|
+
* loop) handles `status` via fall-through, so the new `"none"` value
|
|
89
|
+
* cannot break a pre-PB-T5 caller.
|
|
90
|
+
*
|
|
91
|
+
* Single-Provider (`--provider <id>`) mode still throws
|
|
92
|
+
* `UnsupportedCapabilityError` when the pinned Provider lacks `quota` —
|
|
93
|
+
* the user explicitly asked for one Provider's quota, so emitting a
|
|
94
|
+
* no-signal row would hide the user error. The no-signal row appears
|
|
95
|
+
* only in `all-providers` mode (the default).
|
|
96
|
+
*/
|
|
97
|
+
export interface ProviderQuotaNone {
|
|
98
|
+
readonly provider: ProviderId;
|
|
99
|
+
readonly status: "none";
|
|
100
|
+
readonly reason: "no-capability";
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Where a {@link ProviderQuotaSuccess} row's data came from (PB-T5).
|
|
104
|
+
* Carried as a flat sub-object so consumers that don't read it pay
|
|
105
|
+
* nothing. See {@link ProviderQuotaSuccess.quotaSource}.
|
|
106
|
+
*/
|
|
107
|
+
export interface QuotaSourceLabel {
|
|
108
|
+
/**
|
|
109
|
+
* `"snapshot"` — read from PB-T1's `state.json` and judged fresh.
|
|
110
|
+
* `"live"` — the snapshot was stale/missing/corrupt, so the
|
|
111
|
+
* dashboard fell back to a live probe (and awaited the write-through
|
|
112
|
+
* to the snapshot before returning).
|
|
113
|
+
*/
|
|
114
|
+
readonly source: "snapshot" | "live";
|
|
115
|
+
/** Epoch-ms the underlying observation was made (`observedAt`). */
|
|
116
|
+
readonly observedAt: number;
|
|
117
|
+
/**
|
|
118
|
+
* Whether `observedAt` is within the authoritative staleness
|
|
119
|
+
* threshold (`DEFAULT_QUOTA_STALE_THRESHOLD_MS`, 10 min). Selection
|
|
120
|
+
* (PB-T4) treats non-authoritative rows as eligible-but-neutral; the
|
|
121
|
+
* dashboard surfaces the same flag so a user can correlate a
|
|
122
|
+
* selection pick with the data that drove it. A `"live"` row is
|
|
123
|
+
* always authoritative (just observed); a `"snapshot"` row is
|
|
124
|
+
* authoritative iff `observedAt` is within the threshold.
|
|
125
|
+
*/
|
|
126
|
+
readonly authoritative: boolean;
|
|
127
|
+
}
|
|
65
128
|
export interface QuotaDashboard {
|
|
66
129
|
schemaVersion: 1;
|
|
67
130
|
effectiveProvider: ProviderId;
|
|
68
|
-
providers: Array<ProviderQuotaSuccess | ProviderQuotaFailure>;
|
|
131
|
+
providers: Array<ProviderQuotaSuccess | ProviderQuotaFailure | ProviderQuotaNone>;
|
|
69
132
|
}
|
|
70
133
|
export interface QuotaCapability {
|
|
71
134
|
invoke(): Promise<ProviderQuotaSuccess>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quota.d.ts","sourceRoot":"","sources":["../../src/capabilities/quota.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;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,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;IACxC,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;
|
|
1
|
+
{"version":3,"file":"quota.d.ts","sourceRoot":"","sources":["../../src/capabilities/quota.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;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,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;IACxC,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;;;;;GAKG;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;CACnC;AAkDD;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,GAAG,WAAW,CAoCvE;AAMD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,GAAG,oBAAoB,CAahG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quota.js","sourceRoot":"","sources":["../../src/capabilities/quota.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,EAAE,cAAc,EAA2B,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"quota.js","sourceRoot":"","sources":["../../src/capabilities/quota.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/code.d.ts
CHANGED
|
@@ -11,10 +11,18 @@ import type { CommandContext, CommandResult } from "../command-invocation.js";
|
|
|
11
11
|
export interface CodeRunOptions {
|
|
12
12
|
timeout?: number;
|
|
13
13
|
includeLogs?: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* T2b — Credential view: resolved env (injected env + file keys)
|
|
16
|
+
* forwarded to the Code Mode client so a wizard-written key
|
|
17
|
+
* authorises transport without ambient state.
|
|
18
|
+
*/
|
|
19
|
+
env?: NodeJS.ProcessEnv;
|
|
14
20
|
}
|
|
15
21
|
export declare function runCodeFile(filePath: string, options?: CodeRunOptions, context?: CommandContext): Promise<CommandResult>;
|
|
16
22
|
export declare function evalCode(code: string, options?: CodeRunOptions, context?: CommandContext): Promise<CommandResult>;
|
|
17
|
-
export declare function printInterfaces(
|
|
23
|
+
export declare function printInterfaces(options?: {
|
|
24
|
+
env?: NodeJS.ProcessEnv;
|
|
25
|
+
}, context?: CommandContext): Promise<CommandResult>;
|
|
18
26
|
export declare function printPromptTemplate(context?: CommandContext): CommandResult;
|
|
19
27
|
export declare const CODE_HELP: string;
|
|
20
28
|
//# sourceMappingURL=code.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code.d.ts","sourceRoot":"","sources":["../../src/commands/code.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9E,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"code.d.ts","sourceRoot":"","sources":["../../src/commands/code.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9E,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB;AAED,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,cAAmB,EAC5B,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,aAAa,CAAC,CAWxB;AAED,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAmB,EAC5B,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,aAAa,CAAC,CASxB;AAED,wBAAsB,eAAe,CACnC,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;CAAO,EACzC,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,aAAa,CAAC,CAQxB;AAED,wBAAgB,mBAAmB,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,aAAa,CAE3E;AAGD,eAAO,MAAM,SAAS,QAkBd,CAAC"}
|
package/dist/commands/code.js
CHANGED
|
@@ -11,7 +11,7 @@ import * as fs from "node:fs/promises";
|
|
|
11
11
|
import { ZaiCodeModeClient } from "../lib/code-mode.js";
|
|
12
12
|
export async function runCodeFile(filePath, options = {}, context) {
|
|
13
13
|
const code = await fs.readFile(filePath, "utf8");
|
|
14
|
-
const codeClient = new ZaiCodeModeClient();
|
|
14
|
+
const codeClient = new ZaiCodeModeClient({ env: options.env });
|
|
15
15
|
try {
|
|
16
16
|
const result = await codeClient.callToolChain(code, options.timeout);
|
|
17
17
|
const data = options.includeLogs ? result : result.result;
|
|
@@ -22,7 +22,7 @@ export async function runCodeFile(filePath, options = {}, context) {
|
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
export async function evalCode(code, options = {}, context) {
|
|
25
|
-
const codeClient = new ZaiCodeModeClient();
|
|
25
|
+
const codeClient = new ZaiCodeModeClient({ env: options.env });
|
|
26
26
|
try {
|
|
27
27
|
const result = await codeClient.callToolChain(code, options.timeout);
|
|
28
28
|
const data = options.includeLogs ? result : result.result;
|
|
@@ -32,8 +32,8 @@ export async function evalCode(code, options = {}, context) {
|
|
|
32
32
|
await codeClient.close().catch(() => { });
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
|
-
export async function printInterfaces(context) {
|
|
36
|
-
const codeClient = new ZaiCodeModeClient();
|
|
35
|
+
export async function printInterfaces(options = {}, context) {
|
|
36
|
+
const codeClient = new ZaiCodeModeClient({ env: options.env });
|
|
37
37
|
try {
|
|
38
38
|
const interfaces = await codeClient.getAllInterfaces();
|
|
39
39
|
return { kind: "data", data: interfaces };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code.js","sourceRoot":"","sources":["../../src/commands/code.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"code.js","sourceRoot":"","sources":["../../src/commands/code.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAcxD,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,QAAgB,EAChB,OAAO,GAAmB,EAAE,EAC5B,OAAwB;IAExB,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAEjD,MAAM,UAAU,GAAG,IAAI,iBAAiB,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC/D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACrE,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;QAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAChC,CAAC;YAAS,CAAC;QACT,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,IAAY,EACZ,OAAO,GAAmB,EAAE,EAC5B,OAAwB;IAExB,MAAM,UAAU,GAAG,IAAI,iBAAiB,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC/D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACrE,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;QAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAChC,CAAC;YAAS,CAAC;QACT,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAO,GAAgC,EAAE,EACzC,OAAwB;IAExB,MAAM,UAAU,GAAG,IAAI,iBAAiB,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC/D,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,gBAAgB,EAAE,CAAC;QACvD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAC5C,CAAC;YAAS,CAAC;QACT,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAwB;IAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,CAAC,iBAAiB,EAAE,EAAE,CAAC;AACvE,CAAC;AAED,YAAY;AACZ,MAAM,CAAC,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;CAkBxB,CAAC,IAAI,EAAE,CAAC"}
|
|
@@ -18,8 +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 } from "../capabilities/diagnostics.js";
|
|
21
|
+
import type { DiagnosticsReport, ProviderVerificationSummary } from "../capabilities/diagnostics.js";
|
|
22
22
|
import type { ProviderDescriptor, ProviderId } from "../providers/types.js";
|
|
23
|
+
import type { VerificationPromotionStore } from "../lib/config-store.js";
|
|
24
|
+
import { type QuotaState } from "../lib/quota-store.js";
|
|
23
25
|
export interface DoctorDiagnosticsDependencies {
|
|
24
26
|
readonly noTools: boolean;
|
|
25
27
|
readonly effectiveProvider: ProviderId;
|
|
@@ -36,6 +38,65 @@ export interface DoctorDiagnosticsDependencies {
|
|
|
36
38
|
* simply leaves out the `cache` field.
|
|
37
39
|
*/
|
|
38
40
|
readonly cacheSummary?: string;
|
|
41
|
+
/**
|
|
42
|
+
* Optional verification promoter (T3b — review item 10). When
|
|
43
|
+
* supplied, Doctor flips `verification.status: unverified → verified`
|
|
44
|
+
* for each Provider whose probe SUCCEEDS. The promotion is
|
|
45
|
+
* best-effort: a write failure is reported through
|
|
46
|
+
* {@link DoctorDiagnosticsDependencies.onPromotionError} (when
|
|
47
|
+
* supplied) and never turns a successful probe into a Doctor failure.
|
|
48
|
+
* Skipped, failed, no-tools, and network-deferred records are NOT
|
|
49
|
+
* promoted (the probe result is authoritative). When omitted, Doctor
|
|
50
|
+
* runs without promotion (backward-compatible with existing tests).
|
|
51
|
+
*/
|
|
52
|
+
readonly verificationPromoter?: VerificationPromotionStore;
|
|
53
|
+
/**
|
|
54
|
+
* Optional clock used for the promoted `checkedAt` timestamp.
|
|
55
|
+
* Defaults to `Date.now`; tests inject a fixed clock for
|
|
56
|
+
* deterministic timestamps.
|
|
57
|
+
*/
|
|
58
|
+
readonly now?: () => number;
|
|
59
|
+
/**
|
|
60
|
+
* Optional sink for promotion-write failures. Doctor isolates write
|
|
61
|
+
* failures (a successful probe never becomes a Doctor failure on the
|
|
62
|
+
* back of a write error); when this sink is supplied, the failure is
|
|
63
|
+
* reported there so the dispatcher can surface it as a stderr notice
|
|
64
|
+
* without affecting the exit code. When omitted, write failures are
|
|
65
|
+
* silently swallowed.
|
|
66
|
+
*/
|
|
67
|
+
readonly onPromotionError?: (providerId: ProviderId, error: unknown) => void;
|
|
68
|
+
/**
|
|
69
|
+
* Optional quota snapshot for the per-Provider `quota` summary
|
|
70
|
+
* (PB-T5 — Plan B). When supplied, each Provider entry embeds a
|
|
71
|
+
* `{ source, observedAt?, authoritative }` summary derived from its
|
|
72
|
+
* snapshot entry. When omitted, the `quota` field is omitted on
|
|
73
|
+
* every entry (backward-compatible with pre-PB-T5 callers). Doctor
|
|
74
|
+
* NEVER live-probes quota — it only reads the snapshot; the live
|
|
75
|
+
* probe belongs to the `quota` command. Under `--no-tools` the
|
|
76
|
+
* field still appears when a snapshot is available (a snapshot
|
|
77
|
+
* read is a local state read, not transport).
|
|
78
|
+
*/
|
|
79
|
+
readonly quotaSnapshot?: QuotaState;
|
|
80
|
+
/**
|
|
81
|
+
* Optional verification records (Plan A — surfaced in Doctor by
|
|
82
|
+
* PB-T5). When supplied, each Provider entry embeds a
|
|
83
|
+
* `verification` summary mirroring the Provider's
|
|
84
|
+
* `config.providers[id].verification` record. The dispatcher maps
|
|
85
|
+
* the config-store `ProviderVerification` shape to the capability
|
|
86
|
+
* contract's `ProviderVerificationSummary` (structural twin — kept
|
|
87
|
+
* separate so the capability contract does not import
|
|
88
|
+
* `lib/config-store.ts`). When omitted, the field is omitted
|
|
89
|
+
* (backward-compatible).
|
|
90
|
+
*/
|
|
91
|
+
readonly verificationRecords?: Partial<Record<ProviderId, ProviderVerificationSummary>>;
|
|
92
|
+
/**
|
|
93
|
+
* Optional staleness threshold for the per-Provider `quota`
|
|
94
|
+
* summary's `authoritative` flag. Defaults to
|
|
95
|
+
* {@link DEFAULT_QUOTA_STALE_THRESHOLD_MS} (10 min — Tavily's
|
|
96
|
+
* 10/10min key limit is the floor). Only consulted when
|
|
97
|
+
* `quotaSnapshot` is supplied.
|
|
98
|
+
*/
|
|
99
|
+
readonly thresholdMs?: number;
|
|
39
100
|
}
|
|
40
101
|
/**
|
|
41
102
|
* Build a schema-version-2 {@link DiagnosticsReport}. Inventory
|
|
@@ -45,6 +106,15 @@ export interface DoctorDiagnosticsDependencies {
|
|
|
45
106
|
* configured-state evaluation. Otherwise each configured Provider is
|
|
46
107
|
* probed through shared execution with settled collection, preserving
|
|
47
108
|
* registry order and normalized redacted failures.
|
|
109
|
+
*
|
|
110
|
+
* PB-T5: when `deps.quotaSnapshot` is supplied, each entry carries a
|
|
111
|
+
* `quota` summary derived from the snapshot (source/freshness). When
|
|
112
|
+
* `deps.verificationRecords` is supplied, each entry carries a
|
|
113
|
+
* `verification` summary mirroring Plan A's config record. Both fields
|
|
114
|
+
* are omitted when their dependency is absent (backward-compatible).
|
|
115
|
+
* Doctor never live-probes quota — it only reads the snapshot. The
|
|
116
|
+
* `quota` field appears even under `--no-tools` (snapshot reads are
|
|
117
|
+
* local state, not transport).
|
|
48
118
|
*/
|
|
49
119
|
export declare function buildDiagnosticsReport(deps: DoctorDiagnosticsDependencies): Promise<DiagnosticsReport>;
|
|
50
120
|
/**
|
|
@@ -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":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAEV,iBAAiB,EAGjB,2BAA2B,EAC5B,MAAM,gCAAgC,CAAC;AAKxC,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAsB,MAAM,uBAAuB,CAAC;AAChG,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,uBAAuB,CAAC;AAM/B,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,iBAAiB,EAAE,UAAU,CAAC;IACvC,QAAQ,CAAC,WAAW,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACpD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,QAAQ,CAAC,MAAM,EAAE,MAAM,MAAM,CAAC;IAC9B;;;;;;;OAOG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,0BAA0B,CAAC;IAC3D;;;;OAIG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B;;;;;;;OAOG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7E;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,UAAU,CAAC;IACpC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,2BAA2B,CAAC,CAAC,CAAC;IACxF;;;;;;OAMG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AA6CD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,6BAA6B,GAClC,OAAO,CAAC,iBAAiB,CAAC,CAiF5B;AAgED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAKhE;AAMD,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,WAAW,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACxD;AAED;;;;GAIG;AACH,wBAAsB,MAAM,CAC1B,IAAI,EAAE,yBAAyB,GAC9B,OAAO,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAO3C;AAED,eAAO,MAAM,WAAW,QAoEhB,CAAC"}
|
package/dist/commands/doctor.js
CHANGED
|
@@ -21,6 +21,7 @@ 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 { DEFAULT_QUOTA_STALE_THRESHOLD_MS, isQuotaSnapshotStale, } from "../lib/quota-store.js";
|
|
24
25
|
function nodeMajor() {
|
|
25
26
|
const [major] = process.versions.node.split(".");
|
|
26
27
|
return parseInt(major, 10);
|
|
@@ -50,21 +51,78 @@ async function probeProvider(descriptor, env, sleep, random) {
|
|
|
50
51
|
* configured-state evaluation. Otherwise each configured Provider is
|
|
51
52
|
* probed through shared execution with settled collection, preserving
|
|
52
53
|
* registry order and normalized redacted failures.
|
|
54
|
+
*
|
|
55
|
+
* PB-T5: when `deps.quotaSnapshot` is supplied, each entry carries a
|
|
56
|
+
* `quota` summary derived from the snapshot (source/freshness). When
|
|
57
|
+
* `deps.verificationRecords` is supplied, each entry carries a
|
|
58
|
+
* `verification` summary mirroring Plan A's config record. Both fields
|
|
59
|
+
* are omitted when their dependency is absent (backward-compatible).
|
|
60
|
+
* Doctor never live-probes quota — it only reads the snapshot. The
|
|
61
|
+
* `quota` field appears even under `--no-tools` (snapshot reads are
|
|
62
|
+
* local state, not transport).
|
|
53
63
|
*/
|
|
54
64
|
export async function buildDiagnosticsReport(deps) {
|
|
55
65
|
const secrets = configuredSecrets(deps.env);
|
|
66
|
+
const now = (deps.now ?? Date.now)();
|
|
67
|
+
const thresholdMs = deps.thresholdMs ?? DEFAULT_QUOTA_STALE_THRESHOLD_MS;
|
|
56
68
|
const baseEntries = deps.descriptors.map((descriptor) => ({
|
|
57
69
|
provider: descriptor.id,
|
|
58
70
|
configured: descriptor.isConfigured(deps.env),
|
|
59
71
|
capabilities: [...descriptor.capabilities()],
|
|
60
72
|
}));
|
|
73
|
+
// PB-T5 — compute the additive `quota` and `verification` fields
|
|
74
|
+
// once per Provider. Both are pure lookups against injected state
|
|
75
|
+
// (snapshot/config records), never transport. Returned as a side
|
|
76
|
+
// table so the probe branches can attach them without re-reading.
|
|
77
|
+
const quotaFor = (provider) => {
|
|
78
|
+
if (!deps.quotaSnapshot)
|
|
79
|
+
return undefined;
|
|
80
|
+
const snapshot = deps.quotaSnapshot.quota[provider];
|
|
81
|
+
if (!snapshot) {
|
|
82
|
+
return { source: "none", authoritative: false };
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
source: "snapshot",
|
|
86
|
+
observedAt: snapshot.observedAt,
|
|
87
|
+
authoritative: !isQuotaSnapshotStale(snapshot, now, thresholdMs),
|
|
88
|
+
};
|
|
89
|
+
};
|
|
90
|
+
const verificationFor = (provider) => deps.verificationRecords?.[provider];
|
|
61
91
|
const providers = deps.noTools
|
|
62
92
|
? baseEntries.map((entry) => ({
|
|
63
93
|
...entry,
|
|
64
94
|
status: "skipped",
|
|
65
95
|
reason: entry.configured ? "tools-disabled" : "not-configured",
|
|
96
|
+
...(quotaFor(entry.provider) !== undefined ? { quota: quotaFor(entry.provider) } : {}),
|
|
97
|
+
...(verificationFor(entry.provider) !== undefined
|
|
98
|
+
? { verification: verificationFor(entry.provider) }
|
|
99
|
+
: {}),
|
|
66
100
|
}))
|
|
67
|
-
: await probeEntries(baseEntries, deps, secrets);
|
|
101
|
+
: await probeEntries(baseEntries, deps, secrets, quotaFor, verificationFor);
|
|
102
|
+
// T3b — verification promotion (review item 10). After a successful
|
|
103
|
+
// probe, flip the matching Provider's `verification.status` from
|
|
104
|
+
// `unverified` to `verified`. Best-effort: a write failure is
|
|
105
|
+
// isolated through `onPromotionError` and never turns a successful
|
|
106
|
+
// probe into a Doctor failure. Only `status: "ok"` records are
|
|
107
|
+
// promotable; skipped, failed, no-tools, and network-deferred
|
|
108
|
+
// records are not (the probe result is authoritative). Awaited so a
|
|
109
|
+
// subsequent read after Doctor completion is deterministic.
|
|
110
|
+
if (deps.verificationPromoter) {
|
|
111
|
+
const checkedAt = now;
|
|
112
|
+
for (const entry of providers) {
|
|
113
|
+
if (entry.status !== "ok")
|
|
114
|
+
continue;
|
|
115
|
+
try {
|
|
116
|
+
await deps.verificationPromoter.promote(entry.provider, checkedAt);
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
// Isolated: a write failure does not propagate. The sink (when
|
|
120
|
+
// supplied) lets the dispatcher surface it as a stderr notice
|
|
121
|
+
// without affecting the exit code.
|
|
122
|
+
deps.onPromotionError?.(entry.provider, error);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
68
126
|
// L1 fix: the cache summary is formatted by the CLI handler and
|
|
69
127
|
// threaded through deps.cacheSummary. The report builder only embeds
|
|
70
128
|
// it; it never reads `cacheStats()` itself.
|
|
@@ -87,23 +145,41 @@ export async function buildDiagnosticsReport(deps) {
|
|
|
87
145
|
* NOT fail the report. A configured probe failure is normalized and
|
|
88
146
|
* recursively redacted before joining the report; successful entries
|
|
89
147
|
* are preserved alongside it.
|
|
148
|
+
*
|
|
149
|
+
* PB-T5: the additive `quota` and `verification` fields are attached
|
|
150
|
+
* to EVERY entry (success/skipped/error) via the injected lookup
|
|
151
|
+
* closures — they are pure state reads, not transport, so they appear
|
|
152
|
+
* regardless of the probe outcome. A failed probe with a fresh
|
|
153
|
+
* snapshot still surfaces the snapshot summary so a user can see both
|
|
154
|
+
* the probe failure and the quota state.
|
|
90
155
|
*/
|
|
91
|
-
async function probeEntries(baseEntries, deps, secrets) {
|
|
156
|
+
async function probeEntries(baseEntries, deps, secrets, quotaFor, verificationFor) {
|
|
92
157
|
const configuredIndexes = baseEntries
|
|
93
158
|
.map((entry, index) => (entry.configured ? index : -1))
|
|
94
159
|
.filter((index) => index >= 0);
|
|
95
160
|
const settled = await Promise.allSettled(configuredIndexes.map((index) => probeProvider(deps.descriptors[index], deps.env, deps.sleep, deps.random)));
|
|
96
161
|
let settledCursor = 0;
|
|
97
162
|
return baseEntries.map((entry) => {
|
|
163
|
+
const quota = quotaFor(entry.provider);
|
|
164
|
+
const verification = verificationFor(entry.provider);
|
|
165
|
+
const additive = {
|
|
166
|
+
...(quota !== undefined ? { quota } : {}),
|
|
167
|
+
...(verification !== undefined ? { verification } : {}),
|
|
168
|
+
};
|
|
98
169
|
if (!entry.configured) {
|
|
99
|
-
return {
|
|
170
|
+
return {
|
|
171
|
+
...entry,
|
|
172
|
+
status: "skipped",
|
|
173
|
+
reason: "not-configured",
|
|
174
|
+
...additive,
|
|
175
|
+
};
|
|
100
176
|
}
|
|
101
177
|
const result = settled[settledCursor++];
|
|
102
178
|
if (result.status === "fulfilled") {
|
|
103
|
-
return { ...entry, status: "ok" };
|
|
179
|
+
return { ...entry, status: "ok", ...additive };
|
|
104
180
|
}
|
|
105
181
|
const redacted = redactSecrets(diagnosticErrorFromError(result.reason), secrets);
|
|
106
|
-
return { ...entry, status: "error", error: redacted };
|
|
182
|
+
return { ...entry, status: "error", error: redacted, ...additive };
|
|
107
183
|
});
|
|
108
184
|
}
|
|
109
185
|
// ---------------------------------------------------------------------------
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|