dsh-connect-workbuddy 2.2.1 → 2.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +96 -0
- package/README.en.md +3 -0
- package/README.md +3 -0
- package/lib/bin.js +1 -1
- package/lib/client.js +274 -78
- package/lib/{host-heartbeat-Dy8fW3G5.js → host-heartbeat-CDZRWbFv.js} +49 -1
- package/lib/index.d.ts +273 -1
- package/lib/index.js +422 -2
- package/package.json +1 -1
package/lib/index.d.ts
CHANGED
|
@@ -512,6 +512,25 @@ type WorkBuddyChatResult = {
|
|
|
512
512
|
kind: UpstreamErrorKind;
|
|
513
513
|
message: string;
|
|
514
514
|
};
|
|
515
|
+
/**
|
|
516
|
+
* Chat answer that also carries the response headers.
|
|
517
|
+
*
|
|
518
|
+
* Used by the model probe, whose whole point is to ask "is this usable right
|
|
519
|
+
* now, and if not, when?" — and the only place an upstream ever names a
|
|
520
|
+
* cooldown is the `Retry-After` header, which {@link WorkBuddyChatResult}
|
|
521
|
+
* deliberately does not surface. Returning a separate shape keeps the ordinary
|
|
522
|
+
* chat path (and its callers) untouched.
|
|
523
|
+
*/
|
|
524
|
+
interface WorkBuddyProbeAnswer {
|
|
525
|
+
ok: boolean;
|
|
526
|
+
status: number;
|
|
527
|
+
/** Raw `Retry-After`, when the upstream sent one; null otherwise. */
|
|
528
|
+
retryAfter: string | null;
|
|
529
|
+
/** Failure body excerpt, only when `ok` is false. */
|
|
530
|
+
body?: string;
|
|
531
|
+
/** The live stream, only when `ok` is true. The caller drains and discards it. */
|
|
532
|
+
response?: Response;
|
|
533
|
+
}
|
|
515
534
|
/** Classify an upstream failure from its HTTP status and body excerpt. */
|
|
516
535
|
declare function classifyUpstreamError(status: number, body: string): UpstreamErrorKind;
|
|
517
536
|
/**
|
|
@@ -578,6 +597,20 @@ declare function parseUpstreamModel(value: unknown): WorkBuddyUpstreamModel | un
|
|
|
578
597
|
declare class WorkBuddyUpstreamClient {
|
|
579
598
|
/** POST the chat endpoint; a successful answer is the raw SSE response. */
|
|
580
599
|
chatStream(credential: WorkBuddyCredential, bodyJson: string, signal?: AbortSignal): Promise<WorkBuddyChatResult>;
|
|
600
|
+
/**
|
|
601
|
+
* Send one minimal chat request for `bodyJson` and report the RAW answer.
|
|
602
|
+
*
|
|
603
|
+
* Shares {@link chatHeaders} and the chat base with {@link chatStream} on
|
|
604
|
+
* purpose: a probe is only meaningful if it reaches the same endpoint with the
|
|
605
|
+
* same authentication as a real request. The differences are deliberate and
|
|
606
|
+
* narrow — it returns the headers (for `Retry-After`) and the failure body
|
|
607
|
+
* (for classification) instead of a pre-classified error, so the probe module
|
|
608
|
+
* owns the interpretation and the network layer stays a transport.
|
|
609
|
+
*
|
|
610
|
+
* The caller MUST drain {@link WorkBuddyProbeAnswer.response}; an unread body
|
|
611
|
+
* holds the connection open.
|
|
612
|
+
*/
|
|
613
|
+
probeChat(credential: WorkBuddyCredential, bodyJson: string, signal?: AbortSignal): Promise<WorkBuddyProbeAnswer>;
|
|
581
614
|
/** POST the token-refresh endpoint; the caller merges the outcome. */
|
|
582
615
|
refreshToken(credential: WorkBuddyCredential): Promise<WorkBuddyRefreshOutcome>;
|
|
583
616
|
/**
|
|
@@ -1153,6 +1186,181 @@ declare function clearHostHeartbeat(): Promise<void>;
|
|
|
1153
1186
|
/** The npm package version this build was produced from. */
|
|
1154
1187
|
declare const WORKBUDDY_CONNECT_VERSION: string;
|
|
1155
1188
|
//#endregion
|
|
1189
|
+
//#region src/probe.d.ts
|
|
1190
|
+
/**
|
|
1191
|
+
* The system message every probe carries.
|
|
1192
|
+
*
|
|
1193
|
+
* Not decoration: the international gateway rejects a conversation that does not
|
|
1194
|
+
* start with a system message (see the module note). A probe that omitted it
|
|
1195
|
+
* would report every global model as broken.
|
|
1196
|
+
*/
|
|
1197
|
+
declare const PROBE_SYSTEM_PROMPT = "You are a connectivity check. Reply with a single word.";
|
|
1198
|
+
/**
|
|
1199
|
+
* Output cap for a probe. One token is enough to prove the model answers.
|
|
1200
|
+
*
|
|
1201
|
+
* The probe's cost comes from its INPUT, not its output (see
|
|
1202
|
+
* {@link PROBE_INPUT_TOKENS}), so paying for a long completion would add money
|
|
1203
|
+
* without adding signal.
|
|
1204
|
+
*/
|
|
1205
|
+
declare const PROBE_MAX_TOKENS = 1;
|
|
1206
|
+
/**
|
|
1207
|
+
* How much input a probe sends, in tokens.
|
|
1208
|
+
*
|
|
1209
|
+
* This is the whole point of the probe, and it is NOT a free choice. The
|
|
1210
|
+
* upstream's rate limit (business code 6004) fires on request SIZE, measured on
|
|
1211
|
+
* 2026-09-29 by varying only the input against one account and one model:
|
|
1212
|
+
*
|
|
1213
|
+
* | input | prompt_tokens the upstream counted | result |
|
|
1214
|
+
* | --- | --- | --- |
|
|
1215
|
+
* | ~10 | 38 | ok |
|
|
1216
|
+
* | ~1,000 | 1,138 | ok |
|
|
1217
|
+
* | ~10,000 | 11,138 | ok |
|
|
1218
|
+
* | ~18,000 | 20,018 | ok |
|
|
1219
|
+
* | ~25,000 | 25,023 | ok |
|
|
1220
|
+
* | ~30,000 | ~32k | **429 / 6004** |
|
|
1221
|
+
*
|
|
1222
|
+
* So the threshold sits between 20k and 30k, a SINGLE large request is enough to
|
|
1223
|
+
* trip it (it is not a running total), and each account reports its own reset
|
|
1224
|
+
* time (two accounts at the same moment: `22:20:33` and `00:32:51`).
|
|
1225
|
+
*
|
|
1226
|
+
* A probe that sent a handful of tokens answered "usable" while every real
|
|
1227
|
+
* request in a long conversation was refused — the probe was asking too small a
|
|
1228
|
+
* question. 25k is sized to be a realistic long-conversation payload.
|
|
1229
|
+
*/
|
|
1230
|
+
declare const PROBE_INPUT_TOKENS = 25000;
|
|
1231
|
+
/**
|
|
1232
|
+
* Build the request body for one probe.
|
|
1233
|
+
*
|
|
1234
|
+
* `stream` is forced because the upstream rejects non-streaming chat requests;
|
|
1235
|
+
* `prepareChatBody` enforces that too, but sending it explicitly keeps this
|
|
1236
|
+
* function's output valid on its own.
|
|
1237
|
+
*
|
|
1238
|
+
* Measured on the built artifact: 112,713 bytes of body, and the upstream
|
|
1239
|
+
* counted `prompt_tokens: 25023` at a cost of `credit: 0.72`.
|
|
1240
|
+
*/
|
|
1241
|
+
declare function probeRequestBody(modelId: string): string;
|
|
1242
|
+
/**
|
|
1243
|
+
* How one probe ended.
|
|
1244
|
+
*
|
|
1245
|
+
* `rate-limited` is split out from a generic failure because it is the one
|
|
1246
|
+
* outcome the feature exists for: it means "this model works, but not right
|
|
1247
|
+
* now". Everything else is a real, actionable failure or a success.
|
|
1248
|
+
*/
|
|
1249
|
+
type WorkBuddyProbeOutcome = 'ok' | 'rate-limited' | 'out-of-credit' | 'credential-rejected' | 'unavailable' | 'not-found' | 'failed';
|
|
1250
|
+
/**
|
|
1251
|
+
* One probe result, as the card renders it.
|
|
1252
|
+
*
|
|
1253
|
+
* `retryAtMs` is present ONLY when the upstream actually stated a time (a
|
|
1254
|
+
* `Retry-After` header, or the region's quota refresh point when the failure is
|
|
1255
|
+
* an exhausted quota). Its absence is meaningful and must be rendered as "the
|
|
1256
|
+
* upstream did not say", never as a locally invented countdown.
|
|
1257
|
+
*/
|
|
1258
|
+
interface WorkBuddyProbeResult {
|
|
1259
|
+
modelId: string;
|
|
1260
|
+
outcome: WorkBuddyProbeOutcome;
|
|
1261
|
+
/** Round-trip time in ms, for a successful probe. */
|
|
1262
|
+
elapsedMs?: number;
|
|
1263
|
+
/** HTTP status the upstream answered with; 0 means the request never landed. */
|
|
1264
|
+
status?: number;
|
|
1265
|
+
/** Upstream's own words, redacted. Present on failures. */
|
|
1266
|
+
message?: string;
|
|
1267
|
+
/** A time the upstream named, in ms. Absent when it named none. */
|
|
1268
|
+
retryAtMs?: number;
|
|
1269
|
+
/** Where a supplied `retryAtMs` came from, so the card can say so. */
|
|
1270
|
+
retrySource?: 'retry-after' | 'upstream-message' | 'quota-refresh';
|
|
1271
|
+
}
|
|
1272
|
+
/**
|
|
1273
|
+
* Parse a `Retry-After` header value into an absolute time.
|
|
1274
|
+
*
|
|
1275
|
+
* Both RFC 9110 forms are accepted: delay-seconds (`120`) and an HTTP-date
|
|
1276
|
+
* (`Wed, 21 Oct 2026 07:28:00 GMT`). Returns undefined for anything else,
|
|
1277
|
+
* including the negative/zero delays some gateways emit — a "retry now" is not
|
|
1278
|
+
* a cooldown and reporting it as one would be worse than saying nothing.
|
|
1279
|
+
*
|
|
1280
|
+
* `nowMs` is injected so the delay-seconds branch is testable without a clock.
|
|
1281
|
+
*/
|
|
1282
|
+
declare function parseRetryAfter(value: string | null, nowMs: number): number | undefined;
|
|
1283
|
+
/**
|
|
1284
|
+
* The cooldown the upstream stated, if it stated one.
|
|
1285
|
+
*
|
|
1286
|
+
* Three sources, in order of authority:
|
|
1287
|
+
*
|
|
1288
|
+
* 1. `Retry-After` on the failure response. This is the upstream naming a time
|
|
1289
|
+
* for THIS request, so it wins.
|
|
1290
|
+
* 2. The reset time the upstream writes into its own failure body (see
|
|
1291
|
+
* {@link parseUpstreamResetAt}). This is the case that actually fires on
|
|
1292
|
+
* this service: a 429 from the Chinese gateway carries code 6004 and a
|
|
1293
|
+
* `将在 … 重置` sentence, with no `Retry-After` header at all.
|
|
1294
|
+
* 3. The region's monthly quota refresh point, but ONLY for an out-of-credit
|
|
1295
|
+
* outcome. A quota that resets at a known time is the one case where "when
|
|
1296
|
+
* can I use this again" has a real answer even without a header — and it is
|
|
1297
|
+
* the answer for the most common real limit on this service.
|
|
1298
|
+
*
|
|
1299
|
+
* A limited outcome with none of the three returns `{}`, which the card renders
|
|
1300
|
+
* as "the upstream did not say when". That remains the honest answer for a
|
|
1301
|
+
* genuinely timeless failure; inventing a number here would be pure fiction.
|
|
1302
|
+
*/
|
|
1303
|
+
declare function cooldownOf(input: {
|
|
1304
|
+
outcome: WorkBuddyProbeOutcome;
|
|
1305
|
+
retryAfter: string | null;
|
|
1306
|
+
nowMs: number;
|
|
1307
|
+
/** The upstream's own failure text, where a reset sentence may live. */
|
|
1308
|
+
body?: string;
|
|
1309
|
+
/** The region's next monthly quota refresh, when the upstream declares one. */
|
|
1310
|
+
quotaRefreshAtMs?: number;
|
|
1311
|
+
}): Pick<WorkBuddyProbeResult, 'retryAtMs' | 'retrySource'>;
|
|
1312
|
+
/**
|
|
1313
|
+
* Classify one failed probe into the card's outcome vocabulary.
|
|
1314
|
+
*
|
|
1315
|
+
* Built on `classifyUpstreamError` rather than re-testing status codes, so a
|
|
1316
|
+
* probe and a real chat request can never disagree about what the same upstream
|
|
1317
|
+
* answer means. The extra split here is `credential-rejected`, which the
|
|
1318
|
+
* upstream signals with a non-JSON 401/403 edge page and which needs completely
|
|
1319
|
+
* different advice (re-auth, not "wait").
|
|
1320
|
+
*/
|
|
1321
|
+
declare function outcomeOfFailure(status: number, body: string): WorkBuddyProbeOutcome;
|
|
1322
|
+
/**
|
|
1323
|
+
* Read the credit this probe consumed out of an SSE stream, when the upstream
|
|
1324
|
+
* reports it.
|
|
1325
|
+
*
|
|
1326
|
+
* Purely informational — the card shows it so a user can see how little a probe
|
|
1327
|
+
* actually costs rather than having to trust a claim. Absent when the stream
|
|
1328
|
+
* carried no `usage` block.
|
|
1329
|
+
*/
|
|
1330
|
+
declare function creditOfStream(text: string): number | undefined;
|
|
1331
|
+
/** Whether a probe outcome means the model answered. */
|
|
1332
|
+
declare function probeSucceeded(outcome: WorkBuddyProbeOutcome): boolean;
|
|
1333
|
+
/** What one probe needs from the upstream client. */
|
|
1334
|
+
interface WorkBuddyProbeClient {
|
|
1335
|
+
probeChat(credential: WorkBuddyCredential, bodyJson: string, signal?: AbortSignal): Promise<{
|
|
1336
|
+
ok: boolean;
|
|
1337
|
+
status: number;
|
|
1338
|
+
retryAfter: string | null;
|
|
1339
|
+
body?: string;
|
|
1340
|
+
response?: Response;
|
|
1341
|
+
}>;
|
|
1342
|
+
}
|
|
1343
|
+
/**
|
|
1344
|
+
* Run one probe for one model and reduce it to the card's row.
|
|
1345
|
+
*
|
|
1346
|
+
* The successful path drains the SSE stream purely to read the `credit` figure
|
|
1347
|
+
* the upstream reports, then discards the rest: the question is whether this
|
|
1348
|
+
* model answers a real-sized request, and `max_tokens: 1` means there is nothing
|
|
1349
|
+
* else in the stream worth keeping.
|
|
1350
|
+
*
|
|
1351
|
+
* Never throws. A probe is a diagnostic the user asked for, so every failure is
|
|
1352
|
+
* a RESULT — one dead model must not abort the batch and hide the other rows.
|
|
1353
|
+
*/
|
|
1354
|
+
declare function probeModel(input: {
|
|
1355
|
+
client: WorkBuddyProbeClient;
|
|
1356
|
+
credential: WorkBuddyCredential;
|
|
1357
|
+
modelId: string;
|
|
1358
|
+
nowMs: number;
|
|
1359
|
+
/** The region's next monthly quota refresh, when known. */
|
|
1360
|
+
quotaRefreshAtMs?: number;
|
|
1361
|
+
signal?: AbortSignal;
|
|
1362
|
+
}): Promise<WorkBuddyProbeResult>;
|
|
1363
|
+
//#endregion
|
|
1156
1364
|
//#region src/status-paths.d.ts
|
|
1157
1365
|
/**
|
|
1158
1366
|
* Node-free constants and types shared by the Host and browser halves.
|
|
@@ -1175,6 +1383,15 @@ declare const WORKBUDDY_MODELS_REFRESH_PATH = "/plugins/dsh-connect-workbuddy/mo
|
|
|
1175
1383
|
declare const WORKBUDDY_ACCOUNTS_REFRESH_PATH = "/plugins/dsh-connect-workbuddy/accounts/refresh";
|
|
1176
1384
|
/** Plugin-owned daily check-in action endpoint. */
|
|
1177
1385
|
declare const WORKBUDDY_CHECKIN_PATH = "/plugins/dsh-connect-workbuddy/checkin";
|
|
1386
|
+
/**
|
|
1387
|
+
* Plugin-owned model probe endpoint.
|
|
1388
|
+
*
|
|
1389
|
+
* Sends one minimal chat request per named model so the card can answer "is
|
|
1390
|
+
* this model usable right now, and if it is limited, when can it be used
|
|
1391
|
+
* again?". Lives on the Host because the credential must never reach the
|
|
1392
|
+
* browser half.
|
|
1393
|
+
*/
|
|
1394
|
+
declare const WORKBUDDY_PROBE_PATH = "/plugins/dsh-connect-workbuddy/probe";
|
|
1178
1395
|
/** Query parameter naming the region a card request addresses. */
|
|
1179
1396
|
declare const WORKBUDDY_REGION_PARAM = "region";
|
|
1180
1397
|
/** Every region, in card tab order. */
|
|
@@ -1444,6 +1661,38 @@ type WorkBuddyWebUsage =
|
|
|
1444
1661
|
status: 'error';
|
|
1445
1662
|
message: string;
|
|
1446
1663
|
};
|
|
1664
|
+
/**
|
|
1665
|
+
* Outcome vocabulary of one model probe, shared by the Host and the card.
|
|
1666
|
+
*
|
|
1667
|
+
* Mirrors `WorkBuddyProbeOutcome` in `./probe.ts`; kept as its own declaration
|
|
1668
|
+
* here because this module is the node-free bridge and must not import the
|
|
1669
|
+
* Host-side probe module (which pulls in the credential type).
|
|
1670
|
+
*/
|
|
1671
|
+
type WorkBuddyWebProbeOutcome = 'ok' | 'rate-limited' | 'out-of-credit' | 'credential-rejected' | 'unavailable' | 'not-found' | 'failed';
|
|
1672
|
+
/** One model's probe result, as the card renders it. */
|
|
1673
|
+
interface WorkBuddyWebProbeResult {
|
|
1674
|
+
modelId: string;
|
|
1675
|
+
outcome: WorkBuddyWebProbeOutcome;
|
|
1676
|
+
/** Round-trip time in ms; present once the request landed. */
|
|
1677
|
+
elapsedMs?: number;
|
|
1678
|
+
/** HTTP status the upstream answered with; 0 means it never landed. */
|
|
1679
|
+
status?: number;
|
|
1680
|
+
/** Upstream's own words, already redacted. */
|
|
1681
|
+
message?: string;
|
|
1682
|
+
/**
|
|
1683
|
+
* A time the upstream named for using this model again, in ms.
|
|
1684
|
+
*
|
|
1685
|
+
* ABSENT means the upstream named none, and the card must say exactly that.
|
|
1686
|
+
* A client-invented countdown here would be fiction. Three sources fill it:
|
|
1687
|
+
* a real `Retry-After` header; the reset sentence the upstream writes into
|
|
1688
|
+
* its own failure BODY (`将在 … UTC+8 重置`, which is where this service
|
|
1689
|
+
* actually puts it — its 429s carry no rate-limit header at all); or, for an
|
|
1690
|
+
* exhausted quota, the region's own quota refresh point.
|
|
1691
|
+
*/
|
|
1692
|
+
retryAtMs?: number;
|
|
1693
|
+
/** Which of those three sources supplied {@link retryAtMs}. */
|
|
1694
|
+
retrySource?: 'retry-after' | 'upstream-message' | 'quota-refresh';
|
|
1695
|
+
}
|
|
1447
1696
|
/**
|
|
1448
1697
|
* Deep copy of a settings value with every `{get(): T}` live reference replaced
|
|
1449
1698
|
* by the value it resolves to.
|
|
@@ -1511,6 +1760,29 @@ interface WorkBuddyStatusRouteOptions {
|
|
|
1511
1760
|
* committed settings value rather than a local guess.
|
|
1512
1761
|
*/
|
|
1513
1762
|
regionEnabled(region: WorkBuddyRegion): boolean;
|
|
1763
|
+
/**
|
|
1764
|
+
* Send one real-volume request to each named model of a region and report what
|
|
1765
|
+
* came back.
|
|
1766
|
+
*
|
|
1767
|
+
* Optional: it is the only dependency the card's test button needs, so a Host
|
|
1768
|
+
* built without it (or a route mounted for a status-only consumer) simply
|
|
1769
|
+
* answers 503 and the button reports that instead of failing the card.
|
|
1770
|
+
*
|
|
1771
|
+
* Every request costs real credits (measured `credit: 0.72` for one probe), so
|
|
1772
|
+
* the card drives this ONE model per click and never as a batch.
|
|
1773
|
+
*/
|
|
1774
|
+
probeModels?(region: WorkBuddyRegion, modelIds: readonly string[], options?: {
|
|
1775
|
+
signal?: AbortSignal;
|
|
1776
|
+
}): Promise<readonly WorkBuddyWebProbeResult[]>;
|
|
1777
|
+
/**
|
|
1778
|
+
* The region's next monthly quota refresh, when the upstream declares one.
|
|
1779
|
+
*
|
|
1780
|
+
* Used ONLY to answer "when can I use this again" for an out-of-credit
|
|
1781
|
+
* outcome, which is the one cooldown the service actually states: a monthly
|
|
1782
|
+
* resource that resets at a known time. Every other limited outcome has no
|
|
1783
|
+
* time from any source and must be reported as such.
|
|
1784
|
+
*/
|
|
1785
|
+
quotaRefreshAtMs?(region: WorkBuddyRegion): number | undefined;
|
|
1514
1786
|
/**
|
|
1515
1787
|
* Report whether a region still has at least one local sign-in.
|
|
1516
1788
|
*
|
|
@@ -1739,4 +2011,4 @@ declare function legacyAttributionRegion(value: Config, accountsFor: (region: Wo
|
|
|
1739
2011
|
*/
|
|
1740
2012
|
declare function apply(ctx: Context, config: Config): void;
|
|
1741
2013
|
//#endregion
|
|
1742
|
-
export { CREDENTIAL_REJECTED_CODE, Config, ENCRYPTED_CREDENTIAL_CODE, FALLBACK_WORKBUDDY_MODELS, FALLBACK_WORKBUDDY_MODELS_GLOBAL, NATIVE_MODALITY_BY_MODEL_ID, type UpstreamErrorKind, WORKBUDDY_ACCOUNTS_REFRESH_PATH, WORKBUDDY_APP_EXECUTABLE_ENV, WORKBUDDY_AUTH_FILENAME, WORKBUDDY_AUTH_FILE_ENV, WORKBUDDY_CHECKIN_PATH, WORKBUDDY_CONNECT_VERSION, WORKBUDDY_GLOBAL_PROVIDER, WORKBUDDY_HOST_HEARTBEAT_FILENAME, WORKBUDDY_MODELS_REFRESH_PATH, WORKBUDDY_PROVIDER, WORKBUDDY_PROVIDERS, WORKBUDDY_PROVIDER_DISPLAY_NAMES, WORKBUDDY_REGIONS, WORKBUDDY_REGION_PARAM, WORKBUDDY_SETTINGS_NS, WORKBUDDY_STREAM_IDLE_TIMEOUT_MS, WORKBUDDY_USAGE_PATH, type WorkBuddyAccountChoice, type WorkBuddyAdapter, type WorkBuddyAuthStatus, type WorkBuddyCandidateFailure, WorkBuddyCatalog, type WorkBuddyChatResult, type WorkBuddyCredential, type WorkBuddyCredentialRecovery, WorkBuddyCredentialRejectedError, WorkBuddyCredentialStore, type WorkBuddyCreditPackage, type WorkBuddyCredits, WorkBuddyEncryptedCredentialError, type WorkBuddyEncryptedField, type WorkBuddyHostHeartbeat, type WorkBuddyModelInfo, type WorkBuddyNativeModality, type WorkBuddyProbeStore, type WorkBuddyReasoning, type WorkBuddyRecoveryCandidate, type WorkBuddyRefreshOutcome, WorkBuddyRegionState, type WorkBuddyShim, type WorkBuddyStatusRouteOptions, type WorkBuddyStoreOptions, WorkBuddyUpstreamClient, type WorkBuddyUpstreamModel, type WorkBuddyUsabilityProbeOptions, apply, asVolatile, authFileName, classifyUpstreamError, clearAtRestKeyCache, clearHostHeartbeat, createAccountUsabilityProbe, createWorkBuddyAdapter, createWorkBuddyShim, defaultDesktopAuthCandidates, defaultDesktopAuthDirs, defaultDesktopAuthPath, deriveAtRestKey, deriveAtRestKeyId, deriveCatalog, fallbackModelsFor, fetchAtRestKeyPayload, findWorkbuddyAppExecutable, hasEncryptedCredentialFields, imageDefaultFor, inject, isCredentialRejectedError, isEncryptedCredentialError, isEncryptedFieldWrapper, isHeartbeatProcessAlive, isWorkbuddyBundle, legacyAttributionRegion, legacyWorkbuddyOwnAuthPath, macosBundleExecutable, macosNestedAppBundles, name, nativeModalityOf, nextRegionEnabled, nextRegionSlots, openEncryptedField, parseCreditMultiplier, parseReasoning, parseUpstreamModel, parseWorkBuddyAuth, prepareChatBody, processStartTimeMs, readAtRestKey, readHostHeartbeat, regionCleared, regionEnabled, regionEnabledOf, regionOf, regionOfProvider, regionOfStatusUrl, regionStateOf, registerWorkBuddyStatusRoute, resolveCredentialRecovery, selectAccountFor, settingsNamespaceOf, toPersistedWorkBuddyModel, unwrapVolatileDeep, withWorkBuddyRegion, workBuddyDisplayName, workBuddyModelInput, workBuddyThinkingLevelMap, workBuddyWebStatus, workbuddyAccountId, workbuddyAppExecutableCandidates, workbuddyHostHeartbeatPath, workbuddyOwnAuthPath, writeHostHeartbeat };
|
|
2014
|
+
export { CREDENTIAL_REJECTED_CODE, Config, ENCRYPTED_CREDENTIAL_CODE, FALLBACK_WORKBUDDY_MODELS, FALLBACK_WORKBUDDY_MODELS_GLOBAL, NATIVE_MODALITY_BY_MODEL_ID, PROBE_INPUT_TOKENS, PROBE_MAX_TOKENS, PROBE_SYSTEM_PROMPT, type UpstreamErrorKind, WORKBUDDY_ACCOUNTS_REFRESH_PATH, WORKBUDDY_APP_EXECUTABLE_ENV, WORKBUDDY_AUTH_FILENAME, WORKBUDDY_AUTH_FILE_ENV, WORKBUDDY_CHECKIN_PATH, WORKBUDDY_CONNECT_VERSION, WORKBUDDY_GLOBAL_PROVIDER, WORKBUDDY_HOST_HEARTBEAT_FILENAME, WORKBUDDY_MODELS_REFRESH_PATH, WORKBUDDY_PROBE_PATH, WORKBUDDY_PROVIDER, WORKBUDDY_PROVIDERS, WORKBUDDY_PROVIDER_DISPLAY_NAMES, WORKBUDDY_REGIONS, WORKBUDDY_REGION_PARAM, WORKBUDDY_SETTINGS_NS, WORKBUDDY_STREAM_IDLE_TIMEOUT_MS, WORKBUDDY_USAGE_PATH, type WorkBuddyAccountChoice, type WorkBuddyAdapter, type WorkBuddyAuthStatus, type WorkBuddyCandidateFailure, WorkBuddyCatalog, type WorkBuddyChatResult, type WorkBuddyCredential, type WorkBuddyCredentialRecovery, WorkBuddyCredentialRejectedError, WorkBuddyCredentialStore, type WorkBuddyCreditPackage, type WorkBuddyCredits, WorkBuddyEncryptedCredentialError, type WorkBuddyEncryptedField, type WorkBuddyHostHeartbeat, type WorkBuddyModelInfo, type WorkBuddyNativeModality, type WorkBuddyProbeClient, type WorkBuddyProbeOutcome, type WorkBuddyProbeResult, type WorkBuddyProbeStore, type WorkBuddyReasoning, type WorkBuddyRecoveryCandidate, type WorkBuddyRefreshOutcome, WorkBuddyRegionState, type WorkBuddyShim, type WorkBuddyStatusRouteOptions, type WorkBuddyStoreOptions, WorkBuddyUpstreamClient, type WorkBuddyUpstreamModel, type WorkBuddyUsabilityProbeOptions, apply, asVolatile, authFileName, classifyUpstreamError, clearAtRestKeyCache, clearHostHeartbeat, cooldownOf, createAccountUsabilityProbe, createWorkBuddyAdapter, createWorkBuddyShim, creditOfStream, defaultDesktopAuthCandidates, defaultDesktopAuthDirs, defaultDesktopAuthPath, deriveAtRestKey, deriveAtRestKeyId, deriveCatalog, fallbackModelsFor, fetchAtRestKeyPayload, findWorkbuddyAppExecutable, hasEncryptedCredentialFields, imageDefaultFor, inject, isCredentialRejectedError, isEncryptedCredentialError, isEncryptedFieldWrapper, isHeartbeatProcessAlive, isWorkbuddyBundle, legacyAttributionRegion, legacyWorkbuddyOwnAuthPath, macosBundleExecutable, macosNestedAppBundles, name, nativeModalityOf, nextRegionEnabled, nextRegionSlots, openEncryptedField, outcomeOfFailure, parseCreditMultiplier, parseReasoning, parseRetryAfter, parseUpstreamModel, parseWorkBuddyAuth, prepareChatBody, probeModel, probeRequestBody, probeSucceeded, processStartTimeMs, readAtRestKey, readHostHeartbeat, regionCleared, regionEnabled, regionEnabledOf, regionOf, regionOfProvider, regionOfStatusUrl, regionStateOf, registerWorkBuddyStatusRoute, resolveCredentialRecovery, selectAccountFor, settingsNamespaceOf, toPersistedWorkBuddyModel, unwrapVolatileDeep, withWorkBuddyRegion, workBuddyDisplayName, workBuddyModelInput, workBuddyThinkingLevelMap, workBuddyWebStatus, workbuddyAccountId, workbuddyAppExecutableCandidates, workbuddyHostHeartbeatPath, workbuddyOwnAuthPath, writeHostHeartbeat };
|