dsh-connect-workbuddy 3.6.0 → 4.2.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/CHANGELOG.md +78 -0
- package/README.en.md +4 -0
- package/README.md +4 -0
- package/docs/assets/dsh-connect-workbuddy-composer-credits.png +0 -0
- package/lib/bin.js +1 -1
- package/lib/client.js +1754 -27
- package/lib/{host-heartbeat-Cg2ahl1n.js → host-heartbeat-C4TXu8ew.js} +367 -25
- package/lib/index.d.ts +263 -2
- package/lib/index.js +895 -10
- package/package.json +1 -1
- package/screenshots.json +2 -1
package/lib/index.d.ts
CHANGED
|
@@ -116,6 +116,12 @@ interface WorkBuddyStoreOptions {
|
|
|
116
116
|
* pre-dual-provider location. Injectable for tests.
|
|
117
117
|
*/
|
|
118
118
|
legacyOwnPath?: string;
|
|
119
|
+
/**
|
|
120
|
+
* The unified credential vault directory for this store. Defaults to the
|
|
121
|
+
* per-region directory under the Harness home; injectable so the vault's
|
|
122
|
+
* merge/scan behaviour is testable without touching a real machine.
|
|
123
|
+
*/
|
|
124
|
+
vaultDir?: string;
|
|
119
125
|
/**
|
|
120
126
|
* Auth directories to scan, overriding the platform defaults. Injectable so
|
|
121
127
|
* the multi-account scan is testable without touching a real machine.
|
|
@@ -233,6 +239,9 @@ declare class WorkBuddyCredentialStore {
|
|
|
233
239
|
private readonly ownPathExplicit;
|
|
234
240
|
private readonly legacyOwnPath;
|
|
235
241
|
private readonly legacyOwnPathExplicit;
|
|
242
|
+
private readonly vaultDirExplicit;
|
|
243
|
+
/** The vault directory, resolved ONCE at construction. */
|
|
244
|
+
private readonly vaultDirResolved;
|
|
236
245
|
private readonly authDirs;
|
|
237
246
|
private readonly resolveAtRestKey;
|
|
238
247
|
private desktopPathOverride;
|
|
@@ -268,6 +277,8 @@ declare class WorkBuddyCredentialStore {
|
|
|
268
277
|
* the real machine's legacy copy.
|
|
269
278
|
*/
|
|
270
279
|
private ownCandidates;
|
|
280
|
+
/** The vault directory this store reads and writes (fixed at construction). */
|
|
281
|
+
private vaultDir;
|
|
271
282
|
/** Repoint the desktop file or directory; applies on the next read. */
|
|
272
283
|
setDesktopPath(path: string | undefined): void;
|
|
273
284
|
/**
|
|
@@ -321,6 +332,16 @@ declare class WorkBuddyCredentialStore {
|
|
|
321
332
|
* which is what keeps the two regions' providers from cross-billing.
|
|
322
333
|
*/
|
|
323
334
|
private readAll;
|
|
335
|
+
/**
|
|
336
|
+
* Merge the scan's credentials into the vault and read the vault back.
|
|
337
|
+
*
|
|
338
|
+
* Incremental by contract: a scan that finds nothing new writes nothing.
|
|
339
|
+
* Per account, the vault entry is written only when the scan's read is
|
|
340
|
+
* fresher by {@link isFresherVaultEntry} — so a steady-state scan is
|
|
341
|
+
* mtime-stable and every sync is O(accounts) reads with at most one write
|
|
342
|
+
* per CHANGED account.
|
|
343
|
+
*/
|
|
344
|
+
private syncVault;
|
|
324
345
|
/**
|
|
325
346
|
* Default when no account is explicitly selected: the live sign-in, else the
|
|
326
347
|
* freshest credential. Following the app's current sign-in is the documented
|
|
@@ -396,6 +417,31 @@ declare class WorkBuddyCredentialStore {
|
|
|
396
417
|
private describeMissingCredential;
|
|
397
418
|
/** Read-only sign-in summary; never refreshes and never throws. */
|
|
398
419
|
status(): Promise<WorkBuddyAuthStatus>;
|
|
420
|
+
/**
|
|
421
|
+
* Persist one OAuth sign-in into the unified vault.
|
|
422
|
+
*
|
|
423
|
+
* The credential is written with `source: 'dsh'` (it never came from a
|
|
424
|
+
* desktop file) and joins the readable set on the next scan — the vault is
|
|
425
|
+
* read by `readAll()` like any other source, so no separate discovery path
|
|
426
|
+
* exists. The write is idempotent per account id: re-adding an account
|
|
427
|
+
* replaces its entry, which is exactly what re-issuing a login means.
|
|
428
|
+
*
|
|
429
|
+
* Returns the account id so the card can offer to select it right away.
|
|
430
|
+
*/
|
|
431
|
+
addOAuthAccount(credential: Omit<WorkBuddyCredential, 'source' | 'filePath'>): Promise<string>;
|
|
432
|
+
/**
|
|
433
|
+
* Remove ONE account's plugin-stored credential by id.
|
|
434
|
+
*
|
|
435
|
+
* Only the VAULT entry is deleted — the desktop app's auth files are read-only
|
|
436
|
+
* to this plugin and are never touched, so an account that still exists as a
|
|
437
|
+
* desktop sign-in reappears on the next scan. That is the honest behaviour:
|
|
438
|
+
* the button means "forget what the plugin stored", not "sign the app out".
|
|
439
|
+
*
|
|
440
|
+
* Returns whether a stored entry was actually removed, so the caller can
|
|
441
|
+
* distinguish "removed" from "this account only ever existed as a desktop
|
|
442
|
+
* sign-in" without a second scan.
|
|
443
|
+
*/
|
|
444
|
+
removeAccount(accountId: string): Promise<boolean>;
|
|
399
445
|
/**
|
|
400
446
|
* Remove every plugin-owned copy this store could read (per-region file,
|
|
401
447
|
* legacy single file, and their lock siblings); the desktop files are
|
|
@@ -406,7 +452,6 @@ declare class WorkBuddyCredentialStore {
|
|
|
406
452
|
logout(): Promise<void>;
|
|
407
453
|
private needsRefresh;
|
|
408
454
|
private refreshNow;
|
|
409
|
-
private saveOwn;
|
|
410
455
|
/**
|
|
411
456
|
* Every readable plugin-owned copy, in candidate order; absent or corrupt
|
|
412
457
|
* files are skipped rather than propagated.
|
|
@@ -578,6 +623,30 @@ interface UpstreamErrorDetail {
|
|
|
578
623
|
* them at the openresty layer with an HTML 401.
|
|
579
624
|
*/
|
|
580
625
|
declare function regionOf(domain: string): WorkBuddyRegion;
|
|
626
|
+
/**
|
|
627
|
+
* The STRICT counterpart of {@link regionOf}: a region's domain only when it is
|
|
628
|
+
* positively recognised, `undefined` for anything else.
|
|
629
|
+
*
|
|
630
|
+
* `regionOf`'s catch-all is deliberate — the CN product is single-homed, so an
|
|
631
|
+
* unrecognised spelling is treated as CN and a real (if oddly written) CN
|
|
632
|
+
* credential still resolves. That reasoning holds only for a domain the
|
|
633
|
+
* UPSTREAM issued. It does not hold for a value read out of a file someone
|
|
634
|
+
* handed the plugin: there "unrecognised" means "cannot be classified", and
|
|
635
|
+
* calling it CN would file a foreign or spoofed credential in the CN vault.
|
|
636
|
+
* Import gates must use this, not {@link regionOf}.
|
|
637
|
+
*
|
|
638
|
+
* Both sides are matched on their registrable domain, so a bare host and any
|
|
639
|
+
* subdomain qualify while a lookalike such as `codebuddy.cn.evil.com` cannot.
|
|
640
|
+
*
|
|
641
|
+
* `copilot.tencent.com` is NOT a third product — it is this plugin's OWN CN
|
|
642
|
+
* chat gateway (`CN_CHAT_BASE`), and the credential's `domain` field carries it
|
|
643
|
+
* verbatim on real records. Refusing it here made the plugin reject its own
|
|
644
|
+
* export: the card exported 8 accounts, and re-importing that file skipped the
|
|
645
|
+
* three whose `domain` was the gateway. It cannot be spoofed into the wrong
|
|
646
|
+
* region by being recognised here — it names the CN gateway, so admitting it is
|
|
647
|
+
* the same decision as admitting `workbuddy.cn`.
|
|
648
|
+
*/
|
|
649
|
+
declare function knownRegionOf(domain: string): WorkBuddyRegion | undefined;
|
|
581
650
|
/**
|
|
582
651
|
* Normalize an OpenAI chat-completions body for the WorkBuddy upstream:
|
|
583
652
|
* force `stream: true` (the upstream rejects non-streaming), flatten
|
|
@@ -1778,6 +1847,59 @@ declare const WORKBUDDY_CHECKIN_PATH = "/plugins/dsh-connect-workbuddy/checkin";
|
|
|
1778
1847
|
* browser half.
|
|
1779
1848
|
*/
|
|
1780
1849
|
declare const WORKBUDDY_PROBE_PATH = "/plugins/dsh-connect-workbuddy/probe";
|
|
1850
|
+
/**
|
|
1851
|
+
* One entry of the transfer PREVIEW: display fields only, never token
|
|
1852
|
+
* material. `hasToken` is the import decision input — the import step skips
|
|
1853
|
+
* records without one — and the indexes are the FILE's positions, so the user
|
|
1854
|
+
* picks by the same numbers the import call sends back.
|
|
1855
|
+
*/
|
|
1856
|
+
interface WorkBuddyTransferPreviewEntry {
|
|
1857
|
+
index: number;
|
|
1858
|
+
uid: string;
|
|
1859
|
+
nickname: string;
|
|
1860
|
+
email: string;
|
|
1861
|
+
hasToken: boolean;
|
|
1862
|
+
}
|
|
1863
|
+
/** The preview answer: the desensitized listing plus the file's total count. */
|
|
1864
|
+
interface WorkBuddyTransferPreview {
|
|
1865
|
+
accounts: readonly WorkBuddyTransferPreviewEntry[];
|
|
1866
|
+
total: number;
|
|
1867
|
+
}
|
|
1868
|
+
/**
|
|
1869
|
+
* The import answer. `imported` counts records merged into the vault (new OR
|
|
1870
|
+
* overwritten — both change the stored entry); `skipped` counts what was
|
|
1871
|
+
* left out: missing token, a bad index, or a record whose login domain does
|
|
1872
|
+
* not belong to the addressed region.
|
|
1873
|
+
*/
|
|
1874
|
+
interface WorkBuddyTransferImportAnswer {
|
|
1875
|
+
imported: number;
|
|
1876
|
+
skipped: number;
|
|
1877
|
+
}
|
|
1878
|
+
/**
|
|
1879
|
+
* The shared file format's record shape, subset the importer consumes.
|
|
1880
|
+
*
|
|
1881
|
+
* Contract with sibling tools exporting the same format: a JSON array of
|
|
1882
|
+
* objects keyed in snake_case — `access_token` (required), `refresh_token`,
|
|
1883
|
+
* `uid`, `nickname`, `email`, `domain`, `expiresAt` (epoch ms),
|
|
1884
|
+
* `refreshExpiresAt`, `auth_raw`. Extra fields ride along untouched.
|
|
1885
|
+
*/
|
|
1886
|
+
interface WorkBuddyTransferRecord {
|
|
1887
|
+
access_token: string;
|
|
1888
|
+
refresh_token?: string;
|
|
1889
|
+
uid?: string;
|
|
1890
|
+
nickname?: string;
|
|
1891
|
+
email?: string;
|
|
1892
|
+
domain?: string;
|
|
1893
|
+
/** Access-token expiry in epoch MILLISECONDS, the sibling format's unit. */
|
|
1894
|
+
expiresAt?: number;
|
|
1895
|
+
refreshExpiresAt?: number;
|
|
1896
|
+
/** The sibling tool's original credential document, preserved verbatim. */
|
|
1897
|
+
auth_raw?: unknown;
|
|
1898
|
+
}
|
|
1899
|
+
/** The export answer: the records themselves, tokens included. */
|
|
1900
|
+
interface WorkBuddyTransferExportAnswer {
|
|
1901
|
+
accounts: WorkBuddyTransferRecord[];
|
|
1902
|
+
}
|
|
1781
1903
|
/** Query parameter naming the region a card request addresses. */
|
|
1782
1904
|
declare const WORKBUDDY_REGION_PARAM = "region";
|
|
1783
1905
|
/** Every region, in card tab order. */
|
|
@@ -1983,6 +2105,17 @@ type WorkBuddyWebUsage =
|
|
|
1983
2105
|
accounts: readonly WorkBuddyWebAccount[];
|
|
1984
2106
|
/** Whether this region's provider is currently offered to DSH. */
|
|
1985
2107
|
enabled?: boolean;
|
|
2108
|
+
/**
|
|
2109
|
+
* Whether this region's sidebar credit line is shown.
|
|
2110
|
+
*
|
|
2111
|
+
* Carried on the Host's answer rather than read from the browser settings
|
|
2112
|
+
* mirror, for the same measured reason as `contextBudgets`: on the affected
|
|
2113
|
+
* 0.1.7 deployment the mirror never picks up this plugin's writes (a save
|
|
2114
|
+
* through the Host endpoint leaves it stale), so a control reading it kept
|
|
2115
|
+
* showing the old value and looked like it could not be turned off — the
|
|
2116
|
+
* "关闭不了" report.
|
|
2117
|
+
*/
|
|
2118
|
+
showCreditsInMainUi?: boolean;
|
|
1986
2119
|
message?: string;
|
|
1987
2120
|
/** The persisted account id matches no local account. */
|
|
1988
2121
|
selectionLost?: boolean;
|
|
@@ -2011,6 +2144,12 @@ type WorkBuddyWebUsage =
|
|
|
2011
2144
|
region: WorkBuddyWebRegion;
|
|
2012
2145
|
/** Whether this region's provider is currently offered to DSH. */
|
|
2013
2146
|
enabled?: boolean;
|
|
2147
|
+
/**
|
|
2148
|
+
* Whether this region's sidebar credit line is shown. See the signed-out
|
|
2149
|
+
* variant for why this travels on the Host's answer instead of the browser
|
|
2150
|
+
* settings mirror.
|
|
2151
|
+
*/
|
|
2152
|
+
showCreditsInMainUi?: boolean;
|
|
2014
2153
|
source?: 'desktop' | 'dsh';
|
|
2015
2154
|
tokenExpiresAtMs: number;
|
|
2016
2155
|
/** A saved per-region choice is in effect (false = following the app). */
|
|
@@ -2317,6 +2456,19 @@ interface WorkBuddyStatusRouteOptions {
|
|
|
2317
2456
|
* committed settings value rather than a local guess.
|
|
2318
2457
|
*/
|
|
2319
2458
|
regionEnabled(region: WorkBuddyRegion): boolean;
|
|
2459
|
+
/**
|
|
2460
|
+
* Whether the region's sidebar credit line is shown.
|
|
2461
|
+
*
|
|
2462
|
+
* Read from the COMMITTED settings value here rather than in the browser, for
|
|
2463
|
+
* the same reason as `regionEnabled` — and additionally because the browser's
|
|
2464
|
+
* settings mirror is documented as stale for this namespace on the affected
|
|
2465
|
+
* 0.1.7 deployments, which made the checkbox appear unable to turn the line
|
|
2466
|
+
* off ("关闭不了"). The card reads this field off the Host's answer.
|
|
2467
|
+
*
|
|
2468
|
+
* Optional so a Host that predates the setting still satisfies the interface;
|
|
2469
|
+
* absent reads as ON, matching the schema's `default(true)`.
|
|
2470
|
+
*/
|
|
2471
|
+
showCreditsInMainUi?(region: WorkBuddyRegion): boolean;
|
|
2320
2472
|
/**
|
|
2321
2473
|
* Send one real-volume request to each named model of a region and report what
|
|
2322
2474
|
* came back.
|
|
@@ -2359,6 +2511,18 @@ interface WorkBuddyStatusRouteOptions {
|
|
|
2359
2511
|
* probe.
|
|
2360
2512
|
*/
|
|
2361
2513
|
accountUsable?(region: WorkBuddyRegion, account: WorkBuddyRecoveryCandidate): Promise<boolean>;
|
|
2514
|
+
/**
|
|
2515
|
+
* Why each of the region's accounts cannot serve right now, keyed by account
|
|
2516
|
+
* id. Absent key (or an absent dep) means "no reason known" — the composer
|
|
2517
|
+
* panel then marks nothing, which is the honest answer for an account that has
|
|
2518
|
+
* never been measured.
|
|
2519
|
+
*
|
|
2520
|
+
* The rule is the SAME one the pool ranks by (`exclusionOf`), including its
|
|
2521
|
+
* cooldown-expiry handling, so an account the pool calls usable and one the
|
|
2522
|
+
* panel calls rate-limited can never be the same account at the same moment.
|
|
2523
|
+
* Reimplementing the expiry check here would let the two drift.
|
|
2524
|
+
*/
|
|
2525
|
+
accountExclusions?(region: WorkBuddyRegion): Promise<Readonly<Record<string, WorkBuddyWebPoolExclusion>>>;
|
|
2362
2526
|
/**
|
|
2363
2527
|
* The region's account pool, assembled on the Host.
|
|
2364
2528
|
*
|
|
@@ -2368,7 +2532,79 @@ interface WorkBuddyStatusRouteOptions {
|
|
|
2368
2532
|
* that needs a working probe dependency.
|
|
2369
2533
|
*/
|
|
2370
2534
|
pool?: WorkBuddyPoolDeps;
|
|
2535
|
+
/**
|
|
2536
|
+
* OAuth QR sign-in: start a login and poll it to completion.
|
|
2537
|
+
*
|
|
2538
|
+
* Optional as a whole: a Host built without it simply omits the card's
|
|
2539
|
+
* sign-in affordance (an older bundle keeps rendering, minus the button).
|
|
2540
|
+
*/
|
|
2541
|
+
oauth?: WorkBuddyOAuthDeps;
|
|
2542
|
+
/**
|
|
2543
|
+
* Batch credential export / import between machines.
|
|
2544
|
+
*
|
|
2545
|
+
* Optional as a whole: a Host built without it simply omits the card's
|
|
2546
|
+
* transfer section (an older bundle keeps rendering, minus the buttons).
|
|
2547
|
+
*/
|
|
2548
|
+
transfer?: WorkBuddyTransferDeps;
|
|
2549
|
+
}
|
|
2550
|
+
/**
|
|
2551
|
+
* What the transfer route needs from the Host. Everything is region-scoped:
|
|
2552
|
+
* the two regions' vaults are parallel stacks, and an export of one tab must
|
|
2553
|
+
* never leak the other tab's accounts.
|
|
2554
|
+
*/
|
|
2555
|
+
interface WorkBuddyTransferDeps {
|
|
2556
|
+
/**
|
|
2557
|
+
* Export the named accounts' credentials in the shared transfer format.
|
|
2558
|
+
* Unknown ids are simply absent from the answer; an answer with zero
|
|
2559
|
+
* records means nothing named was exportable (the caller decides whether
|
|
2560
|
+
* that is an error).
|
|
2561
|
+
*/
|
|
2562
|
+
exportAccounts(region: WorkBuddyRegion, accountIds: readonly string[]): Promise<WorkBuddyTransferExportAnswer>;
|
|
2563
|
+
/** Parse transfer-file text into the desensitized preview. */
|
|
2564
|
+
previewImport(region: WorkBuddyRegion, text: string): Promise<WorkBuddyTransferPreview>;
|
|
2565
|
+
/**
|
|
2566
|
+
* Merge the selected file entries into the region's vault. Returns the
|
|
2567
|
+
* counters the card reports; `skipped` covers missing tokens, bad indexes,
|
|
2568
|
+
* and records belonging to the other region.
|
|
2569
|
+
*/
|
|
2570
|
+
importAccounts(region: WorkBuddyRegion, text: string, indexes: readonly number[]): Promise<WorkBuddyTransferImportAnswer>;
|
|
2571
|
+
}
|
|
2572
|
+
/**
|
|
2573
|
+
* What the OAuth route needs from the Host: the two session actions, plus the
|
|
2574
|
+
* persistence step the route cannot do itself (only the Host may touch the
|
|
2575
|
+
* credential vault).
|
|
2576
|
+
*/
|
|
2577
|
+
interface WorkBuddyOAuthDeps {
|
|
2578
|
+
/**
|
|
2579
|
+
* Start one login for the region. Resolves the URL the user opens to scan
|
|
2580
|
+
* and confirm, or an actionable error.
|
|
2581
|
+
*/
|
|
2582
|
+
start(region: WorkBuddyRegion): Promise<WorkBuddyOAuthStartResult>;
|
|
2583
|
+
/**
|
|
2584
|
+
* Poll once. The card repeats until `done` — then either the account was
|
|
2585
|
+
* persisted (the Host saved it to the vault) or an error is reported.
|
|
2586
|
+
*/
|
|
2587
|
+
poll(region: WorkBuddyRegion, loginId: string): Promise<WorkBuddyOAuthPollView>;
|
|
2371
2588
|
}
|
|
2589
|
+
/** The start answer, token-free (the state never leaves the Host). */
|
|
2590
|
+
type WorkBuddyOAuthStartResult = {
|
|
2591
|
+
loginId: string;
|
|
2592
|
+
verificationUri: string;
|
|
2593
|
+
expiresIn: number;
|
|
2594
|
+
} | {
|
|
2595
|
+
error: string;
|
|
2596
|
+
};
|
|
2597
|
+
/** The poll answer the card sees. `account` carries display fields only. */
|
|
2598
|
+
type WorkBuddyOAuthPollView = {
|
|
2599
|
+
done: false;
|
|
2600
|
+
} | {
|
|
2601
|
+
done: true;
|
|
2602
|
+
accountName: string;
|
|
2603
|
+
accountId: string;
|
|
2604
|
+
} | {
|
|
2605
|
+
done: true;
|
|
2606
|
+
error: string;
|
|
2607
|
+
};
|
|
2372
2608
|
/**
|
|
2373
2609
|
* What the pool route needs from the Host.
|
|
2374
2610
|
*
|
|
@@ -2402,6 +2638,22 @@ interface WorkBuddyPoolDeps {
|
|
|
2402
2638
|
* checked) instead of passing the guard and running a batch over nothing.
|
|
2403
2639
|
*/
|
|
2404
2640
|
effectiveMemberAccountIds?(region: WorkBuddyRegion): Promise<readonly string[]>;
|
|
2641
|
+
/**
|
|
2642
|
+
* Test ONE account against the region's target model.
|
|
2643
|
+
*
|
|
2644
|
+
* The per-row button's Host half. Optional: a Host built without it simply
|
|
2645
|
+
* omits the row button (an older bundle keeps rendering, minus the control).
|
|
2646
|
+
* Returns undefined when the region cannot name a target model — the same
|
|
2647
|
+
* refusal the batch route reports as 409.
|
|
2648
|
+
*/
|
|
2649
|
+
testOne?(region: WorkBuddyRegion, accountId: string): Promise<WorkBuddyPoolTestRow | undefined>;
|
|
2650
|
+
/**
|
|
2651
|
+
* Forget ONE account's plugin-stored credential. Only the vault entry is
|
|
2652
|
+
* removed; the desktop app's files are never touched. Returns whether an
|
|
2653
|
+
* entry existed — false means the account exists only as a desktop sign-in
|
|
2654
|
+
* (or was already gone), which the card reports instead of a silent no-op.
|
|
2655
|
+
*/
|
|
2656
|
+
removeOne?(region: WorkBuddyRegion, accountId: string): Promise<boolean>;
|
|
2405
2657
|
/**
|
|
2406
2658
|
* Today's check-in state per account id.
|
|
2407
2659
|
*
|
|
@@ -2508,6 +2760,15 @@ interface WorkBuddyRegionState {
|
|
|
2508
2760
|
* row (see `syncRegionRegistration`).
|
|
2509
2761
|
*/
|
|
2510
2762
|
enabled?: boolean;
|
|
2763
|
+
/**
|
|
2764
|
+
* Whether this region's credit balance shows at the DSH sidebar foot.
|
|
2765
|
+
*
|
|
2766
|
+
* Per-region, independently switched: WB CN and WB AI are separate accounts
|
|
2767
|
+
* on separate gateways, so a user holding only one of them must be able to
|
|
2768
|
+
* show exactly that one. Opt-out — an absent value reads as ON, so a config
|
|
2769
|
+
* written before this switch existed keeps whatever the default was.
|
|
2770
|
+
*/
|
|
2771
|
+
showCreditsInMainUi?: boolean;
|
|
2511
2772
|
/** The last-refreshed directory for this region; what the card displays. */
|
|
2512
2773
|
lastCatalog?: WorkBuddyModelInfo[];
|
|
2513
2774
|
/** The user's selection in this region, as model ids. */
|
|
@@ -2721,4 +2982,4 @@ declare function legacyAttributionRegion(value: Config, accountsFor: (region: Wo
|
|
|
2721
2982
|
*/
|
|
2722
2983
|
declare function apply(ctx: Context, config: Config): void;
|
|
2723
2984
|
//#endregion
|
|
2724
|
-
export { CREDENTIAL_REJECTED_CODE, Config, DEFAULT_PROBE_INPUT_TOKENS, ENCRYPTED_CREDENTIAL_CODE, FALLBACK_WORKBUDDY_MODELS, FALLBACK_WORKBUDDY_MODELS_GLOBAL, NATIVE_MODALITY_BY_MODEL_ID, PROBE_INPUT_TOKEN_CHOICES, PROBE_MAX_TOKENS, PROBE_SYSTEM_PROMPT, REFUSES_OFF_MODEL_IDS, 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, WorkBuddyPoolPreferences, 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, defaultOffModelIds, deriveAtRestKey, deriveAtRestKeyId, deriveCatalog, fallbackModelsFor, fetchAtRestKeyPayload, findWorkbuddyAppExecutable, hasEncryptedCredentialFields, imageDefaultFor, inject, isCredentialRejectedError, isEncryptedCredentialError, isEncryptedFieldWrapper, isHeartbeatProcessAlive, isWorkbuddyBundle, legacyAttributionRegion, legacyWorkbuddyOwnAuthPath, macosBundleExecutable, macosNestedAppBundles, name, nativeModalityOf, nextRegionEnabled, nextRegionSlots, offDefaultFor, 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, withEffectiveOff, withWorkBuddyRegion, workBuddyDisplayName, workBuddyModelInput, workBuddyThinkingLevelMap, workBuddyWebStatus, workbuddyAccountId, workbuddyAppExecutableCandidates, workbuddyHostHeartbeatPath, workbuddyOwnAuthPath, writeHostHeartbeat };
|
|
2985
|
+
export { CREDENTIAL_REJECTED_CODE, Config, DEFAULT_PROBE_INPUT_TOKENS, ENCRYPTED_CREDENTIAL_CODE, FALLBACK_WORKBUDDY_MODELS, FALLBACK_WORKBUDDY_MODELS_GLOBAL, NATIVE_MODALITY_BY_MODEL_ID, PROBE_INPUT_TOKEN_CHOICES, PROBE_MAX_TOKENS, PROBE_SYSTEM_PROMPT, REFUSES_OFF_MODEL_IDS, 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, WorkBuddyPoolPreferences, 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, defaultOffModelIds, deriveAtRestKey, deriveAtRestKeyId, deriveCatalog, fallbackModelsFor, fetchAtRestKeyPayload, findWorkbuddyAppExecutable, hasEncryptedCredentialFields, imageDefaultFor, inject, isCredentialRejectedError, isEncryptedCredentialError, isEncryptedFieldWrapper, isHeartbeatProcessAlive, isWorkbuddyBundle, knownRegionOf, legacyAttributionRegion, legacyWorkbuddyOwnAuthPath, macosBundleExecutable, macosNestedAppBundles, name, nativeModalityOf, nextRegionEnabled, nextRegionSlots, offDefaultFor, 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, withEffectiveOff, withWorkBuddyRegion, workBuddyDisplayName, workBuddyModelInput, workBuddyThinkingLevelMap, workBuddyWebStatus, workbuddyAccountId, workbuddyAppExecutableCandidates, workbuddyHostHeartbeatPath, workbuddyOwnAuthPath, writeHostHeartbeat };
|