@bowmark/web 1.23.0 → 1.24.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.
@@ -5,8 +5,8 @@
5
5
  // rather than imported. An `import` or `export` at the top level of this file would
6
6
  // turn it into a module and every declaration below would stop being global.
7
7
  //
8
- // Manifest version: 33a70781b68188bc68feb315e91e0c61cb56ecb49e10d82f223e4feb9d6b3399
9
- // 50 capabilities, 418 providers, 1121 typed functions, 20 refused.
8
+ // Manifest version: 83b6073de78d83a7366cd17844242d5703320faa6ea88973baea85a98639f7d0
9
+ // 51 capabilities, 419 providers, 1122 typed functions, 20 refused.
10
10
  // 51,715 family members, sharing 2 interface(s) — declared once and pointed at, never repeated per member.
11
11
  //
12
12
  // REFUSED — these functions are real and callable, and their declared arguments
@@ -225,9 +225,10 @@ type CallOptions = {
225
225
  /**
226
226
  * Starts a hosted browser agent on `task` and returns at once with its session `id` and a
227
227
  * `watchUrl`. Use ONLY after the library had nothing for this site or a function failed — each
228
- * turn spends real vendor money, charged to the account. Show `watchUrl` to your user: it lets
229
- * them watch the agent and take over the browser (log in, solve a captcha). Then poll with
230
- * `status`.
228
+ * turn spends real vendor money, charged to the account. Your account may hold up to 3
229
+ * concurrent sessions; call `list()` before starting if looping over multiple tasks. Show
230
+ * `watchUrl` to your user: it lets them watch the agent and take over the browser (log in,
231
+ * solve a captcha). Then poll with `status`. Always `stop()` a session when done.
231
232
  */
232
233
  start(options: StartBrowserAgentOptions): Promise<StartBrowserAgentResult>;
233
234
 
@@ -247,15 +248,17 @@ type CallOptions = {
247
248
  send(id: string, message: string, options?: SendBrowserAgentOptions): Promise<SendBrowserAgentResult>;
248
249
 
249
250
  /**
250
- * Stops the agent and shuts its browser; the watch link stops working. Always stop a session
251
- * you are done with — an open browser keeps costing money until Bowmark closes it after 20
252
- * idle minutes.
251
+ * Stops the agent and shuts its browser; the watch link stops working. Always `stop()` a
252
+ * session when you are done with it — an open browser keeps costing money until Bowmark closes
253
+ * it after 20 idle minutes, and the session counts against your 3-session concurrent limit
254
+ * even while idle.
253
255
  */
254
256
  stop(id: string): Promise<StopBrowserAgentResult>;
255
257
 
256
258
  /**
257
- * Lists this account's browser agent sessions, open ones by default — how to recover an id you
258
- * lost.
259
+ * Lists this account's browser agent sessions (open ones by default)check how many you're
260
+ * holding before starting a new one, especially when looping. Idle sessions count against the
261
+ * 3-session concurrent limit until you `stop()` them.
259
262
  */
260
263
  list(options?: ListBrowserAgentsOptions): Promise<ListBrowserAgentsResult>;
261
264
 
@@ -2356,7 +2359,13 @@ type RetailOffer = {
2356
2359
  // across stores as one normalized fact
2357
2360
  }
2358
2361
  type RetailSearchResult = {
2359
- results: RetailOffer[] // ONE query across ALL stores, price-sorted (cheapest first)
2362
+ results: RetailOffer[] // ONE query across ALL stores, price-sorted (cheapest first).
2363
+ // These are each STORE'S OWN keyword results, so a search for
2364
+ // a product also returns its ACCESSORIES and its lookalikes —
2365
+ // and because the list is price-sorted, those sort ABOVE it.
2366
+ // "AirPods Pro 3" puts ~20 cases from $8.50 ahead of the
2367
+ // $199 earbuds. FILTER ON title before reading a cheapest
2368
+ // price off the top row.
2360
2369
  warnings: string[] // always present; names any store that did not answer. A
2361
2370
  // store named here priced NOTHING, so read this before
2362
2371
  // concluding a store has no stock or a worse price
@@ -2371,17 +2380,22 @@ type CallOptions = {
2371
2380
  /**
2372
2381
  * General-merchandise retail across Walmart, Target and Best Buy — one keyword search, fanned
2373
2382
  * out in parallel and returned price-sorted, so an agent can answer 'where can I actually buy
2374
- * this and what does it cost' without querying each store by hand. Best Buy's leg needs the
2375
- * caller's own Best Buy developer key; without one the search still returns Walmart + Target
2376
- * with a `warnings` entry naming the drop.
2383
+ * this and what does it cost' without querying each store by hand. Rows are the stores' own
2384
+ * keyword results, so accessories and lookalikes come back too and sort above the product;
2385
+ * filter on `title`. Best Buy's leg needs the caller's own Best Buy developer key; without one
2386
+ * the search still returns Walmart + Target with a `warnings` entry naming the drop.
2377
2387
  */
2378
2388
  interface Unit {
2379
2389
  /**
2380
2390
  * Searches Walmart, Target and Best Buy in parallel for a keyword and returns one price-sorted
2381
- * list of offers across all stores, each tagged with which store it's from. `warnings` names
2382
- * any store that did not answer including Best Buy when the caller holds no Best Buy
2383
- * developer key so a caller can tell a genuinely cheaper/only offer from one where a store
2384
- * simply didn't answer.
2391
+ * list of offers across all stores, each tagged with which store it's from. THE ROWS ARE EACH
2392
+ * STORE'S OWN KEYWORD RESULTS, so a product search also returns that product's accessories and
2393
+ * its lookalikes, and price-sorting puts those FIRST filter on `title` for the thing you
2394
+ * were actually asked about before reading a price off the top row. Everything you need is in
2395
+ * one call; a store returning accessories is not a reason to go query that store directly.
2396
+ * `warnings` names any store that did not answer — including Best Buy when the caller holds no
2397
+ * Best Buy developer key — so a caller can tell a genuinely cheaper/only offer from one where
2398
+ * a store simply didn't answer.
2385
2399
  */
2386
2400
  search(args: { query: string }): Promise<RetailSearchResult>;
2387
2401
  }
@@ -2768,6 +2782,52 @@ type CallOptions = {
2768
2782
  }
2769
2783
  }
2770
2784
 
2785
+ declare namespace BowmarkCapability_stream_channel {
2786
+ // ── Stream channel settings — read and change your own channel's title, category and language — the unit's own declarations, verbatim ──
2787
+ interface ChannelSettings {
2788
+ platform: "twitch" // the default, and the only one today
2789
+ id: string // the site's own id for these broadcast settings
2790
+ title: string // the channel title shown on the stream page
2791
+ language: string // ISO 639-1, e.g. "en"
2792
+ gameId: string // the category; empty strings when never set
2793
+ gameName: string
2794
+ warnings: string[] // always present
2795
+ }
2796
+ interface SetChannelOptions {
2797
+ platform?: "twitch" // the default, and the only one today
2798
+ title?: string // the channel title shown on the stream page
2799
+ language?: string // ISO 639-1, e.g. "en"
2800
+ game?: string // category NAME, e.g. "Wetrix" — not a category id
2801
+ }
2802
+
2803
+ type CallOptions = {
2804
+ timeoutMs?: number // per-provider budget in ms, default 30000, clamped to 1000-55000.
2805
+ // A provider slower than this is DROPPED from the results and
2806
+ // NAMED in warnings — never silently absent
2807
+ }
2808
+
2809
+ /**
2810
+ * Reads and updates a streamer's own Twitch channel settings — the title shown on the stream
2811
+ * page, the category being played, and the language. Needs the streamer's Twitch sign-in: the
2812
+ * first run answers needs_user with a link to sign in, and later runs reuse it.
2813
+ */
2814
+ interface Unit {
2815
+ /**
2816
+ * Reads the signed-in streamer's own channel settings: the title shown on the stream page, the
2817
+ * category being played, and the language. Takes no arguments. Needs a Twitch sign-in.
2818
+ */
2819
+ get(): Promise<ChannelSettings>;
2820
+
2821
+ /**
2822
+ * Updates the signed-in streamer's own channel settings and returns them as they now stand.
2823
+ * Pass only the fields you are changing; anything you leave out is left alone. `game` is the
2824
+ * category NAME, e.g. "Wetrix". It cannot set tags — Twitch's own update input has no tags
2825
+ * field. Needs a Twitch sign-in.
2826
+ */
2827
+ set(options: SetChannelOptions): Promise<ChannelSettings>;
2828
+ }
2829
+ }
2830
+
2771
2831
  declare namespace BowmarkCapability_stream_highlights {
2772
2832
  // ── Stream highlights — cut a highlight of your own live broadcast — the unit's own declarations, verbatim ──
2773
2833
  interface CreateHighlightOptions {
@@ -5204,6 +5264,36 @@ interface AppleRefurbishedCatalog {
5204
5264
  category: "mac" | "ipad" | "iphone" | "watch" | "appletv" | "homepod" | "airpods" | "accessories";
5205
5265
  listings: AppleRefurbishedListing[];
5206
5266
  }
5267
+ interface AppleAccessoryListing {
5268
+ partNumber: string;
5269
+ name: string;
5270
+ price: number | null;
5271
+ priceCurrency: string | null;
5272
+ url: string;
5273
+ image: string | null;
5274
+ }
5275
+ interface AppleAccessoryCatalog {
5276
+ category:
5277
+ | "cases-protection"
5278
+ | "chargers-adapters"
5279
+ | "headphones-speakers"
5280
+ | "drives-storage"
5281
+ | "mice-keyboards"
5282
+ | "gaming"
5283
+ | "office"
5284
+ | "travel-essentials"
5285
+ | "college-essentials"
5286
+ | "software"
5287
+ | "homekit"
5288
+ | "content-creation"
5289
+ | "health-fitness"
5290
+ | "new-arrivals"
5291
+ | "made-by-apple"
5292
+ | "accessibility";
5293
+ page: number;
5294
+ hasMore: boolean;
5295
+ listings: AppleAccessoryListing[];
5296
+ }
5207
5297
  interface AppleTradeInEstimate {
5208
5298
  device: string;
5209
5299
  upToUsd: number;
@@ -5429,6 +5519,15 @@ interface AppleCompareModels {
5429
5519
  */
5430
5520
  listRefurbished(category: "mac" | "ipad" | "iphone" | "watch" | "appletv" | "homepod" | "airpods" | "accessories"): Promise<AppleRefurbishedCatalog>;
5431
5521
 
5522
+ /**
5523
+ * Everything Apple sells that is not a device, browsable by the sixteen categories apple.com's
5524
+ * own accessories store uses — cases, chargers, headphones, drives, keyboards and the rest —
5525
+ * each listing with its real name, current price and the part number that resolves it straight
5526
+ * through getProductByPartNumber. Apple paginates this store server-side (up to 30 listings a
5527
+ * page); `hasMore` says whether another page exists, since apple.com publishes no total count.
5528
+ */
5529
+ listAccessories(category: "cases-protection" | "chargers-adapters" | "headphones-speakers" | "drives-storage" | "mice-keyboards" | "gaming" | "office" | "travel-essentials" | "college-essentials" | "software" | "homekit" | "content-creation" | "health-fitness" | "new-arrivals" | "made-by-apple" | "accessibility", page?: number): Promise<AppleAccessoryCatalog>;
5530
+
5432
5531
  /**
5433
5532
  * Reads apple.com's own trade-in value table and returns the CEILING ("up to $X")
5434
5533
  * cash-or-credit estimate it publishes for one device — a human name ("iPhone 14 Pro") or the
@@ -7607,8 +7706,11 @@ interface FormField {
7607
7706
  /** List BionicPO inquiry and service categories from the inquiry-services page. */
7608
7707
  listInquiryServices(): Promise<{ services: InquiryService[]; warnings: string[] }>;
7609
7708
 
7610
- /** Get a BionicPO inquiry service's form fields and details. */
7611
- getInquiryServiceDetails(serviceName: string): Promise<ServiceDetails>;
7709
+ /**
7710
+ * Look up one BionicPO inquiry service by name or id and return the site's own description for
7711
+ * it.
7712
+ */
7713
+ getInquiryServiceDetails(service: string): Promise<ServiceDetails>;
7612
7714
  }
7613
7715
  }
7614
7716
 
@@ -8501,107 +8603,6 @@ interface BrixtonCheckoutLink {
8501
8603
  }
8502
8604
  }
8503
8605
 
8504
- declare namespace BowmarkProvider_browser_use {
8505
- // ── Browser Use — the unit's own declarations, verbatim ──
8506
- type BrowserUseRunStatus = "queued" | "dispatching" | "running" | "completed" | "failed" | "cancelled";
8507
-
8508
- interface BrowserUseCreateRunArgs {
8509
- task: string;
8510
- model?: string; // e.g. "claude-sonnet-5"; absent = vendor default
8511
- sessionId?: string; // continue a session
8512
- maxCostUsd?: number;
8513
- proxyCountryCode?: string; // e.g. "us"
8514
- }
8515
-
8516
- interface BrowserUseRunStatusReading { runId: string; status: BrowserUseRunStatus }
8517
- interface BrowserUseCreatedRun { id: string; status: BrowserUseRunStatus; model: string; sessionId: string; workspaceId: string }
8518
-
8519
- interface BrowserUseRun {
8520
- id: string; sessionId: string; task: string; title: string | null; model: string;
8521
- status: BrowserUseRunStatus; result: string | null; error: string | null;
8522
- inputTokens: number; outputTokens: number;
8523
- costUsd: number; // LLM cost only
8524
- createdAt: string; updatedAt: string;
8525
- }
8526
-
8527
- interface BrowserUseRunList { runs: BrowserUseRun[]; hasMore: boolean }
8528
- interface BrowserUseEvent { id: number; ts: string; type: string; data: Record<string, unknown> }
8529
- interface BrowserUseEventsPage { events: BrowserUseEvent[]; nextAfter: number | null; hasMore: boolean }
8530
- interface BrowserUseEventsArgs { runId: string; after?: number; limit?: number }
8531
-
8532
- interface BrowserUseSession { sessionId: string; latestRunId: string; status: string; title: string | null; createdAt: string; updatedAt: string }
8533
-
8534
- interface BrowserUseQueueArgs { sessionId: string; text: string; interrupt?: boolean }
8535
- interface BrowserUseQueuedMessage { id: number; sessionId: string; status: string; mode: string }
8536
-
8537
- interface BrowserUseBrowser {
8538
- id: string; status: string;
8539
- liveUrl: string | null; // interactive; whoever holds it drives the browser
8540
- agentSessionId: string | null;
8541
- timeoutAt: string; startedAt: string; finishedAt: string | null;
8542
- browserCostUsd: number; proxyCostUsd: number; proxyUsedMb: number;
8543
- }
8544
-
8545
- /**
8546
- * Browser Use Cloud's hosted browser agent. Not callable directly: use
8547
- * `bowmark.browser_agent`, which runs it for you with a private watch link and bills the
8548
- * session to your account.
8549
- */
8550
- interface Unit {
8551
- /**
8552
- * Starts a Browser Use agent run on a natural-language task, optionally continuing an existing
8553
- * session. Returns immediately; the run executes on Browser Use's cloud for seconds to
8554
- * minutes. Spends money.
8555
- */
8556
- createRun(args: BrowserUseCreateRunArgs): Promise<BrowserUseCreatedRun>;
8557
-
8558
- /** Reads one run: status, final result or error, token totals and LLM cost. */
8559
- getRun(runId: string): Promise<BrowserUseRun>;
8560
-
8561
- /** The cheap status poll for one run. */
8562
- getRunStatus(runId: string): Promise<BrowserUseRunStatusReading>;
8563
-
8564
- /**
8565
- * A run's step-by-step event stream after a cursor — the agent's reasoning, tool calls, and
8566
- * the `browser.ready` event carrying the live view url.
8567
- */
8568
- listRunEvents(args: BrowserUseEventsArgs): Promise<BrowserUseEventsPage>;
8569
-
8570
- /**
8571
- * Lists every run (agent turn) in a session, newest first, each with its status and LLM cost —
8572
- * how a session's whole spend is read.
8573
- */
8574
- listSessionRuns(sessionId: string): Promise<BrowserUseRunList>;
8575
-
8576
- /**
8577
- * Cancels an in-flight run; idempotent on a finished one. The browser keeps running — stop it
8578
- * separately.
8579
- */
8580
- cancelRun(runId: string): Promise<BrowserUseRun>;
8581
-
8582
- /** Reads a session, including the id of its latest run (a queued message becomes a new run). */
8583
- getSession(sessionId: string): Promise<BrowserUseSession>;
8584
-
8585
- /**
8586
- * Sends a follow-up instruction into a session: it runs as the next turn when the current one
8587
- * ends, or at once with `interrupt: true`.
8588
- */
8589
- queueMessage(args: BrowserUseQueueArgs): Promise<BrowserUseQueuedMessage>;
8590
-
8591
- /** The cloud browser attached to a session, with its live view url and running cost, or null. */
8592
- findSessionBrowser(sessionId: string): Promise<BrowserUseBrowser | null>;
8593
-
8594
- /** Reads one cloud browser: status, live view url, browser and proxy cost. */
8595
- getBrowser(browserId: string): Promise<BrowserUseBrowser>;
8596
-
8597
- /**
8598
- * Stops a cloud browser (cannot be undone). Its cost is then settled down to the time actually
8599
- * used.
8600
- */
8601
- stopBrowser(browserId: string): Promise<BrowserUseBrowser>;
8602
- }
8603
- }
8604
-
8605
8606
  declare namespace BowmarkProvider_builder_strucsure_com {
8606
8607
  // ── StrucSure Home Warranty — the unit's own declarations, verbatim ──
8607
8608
  interface StrucsureRegistrationState {
@@ -16788,8 +16789,9 @@ interface Photo {
16788
16789
  getPlace(args: GetPlaceArgs): Promise<GetPlaceResult>;
16789
16790
 
16790
16791
  /**
16791
- * The reviews Google Maps shows on a business's own panel — up to 5, each with author, star
16792
- * rating, review text and the site's own relative date. A FOURTH reading of searchPlaces' door
16792
+ * The reviews Google Maps shows on a business's own panel — a handful, each with author, star
16793
+ * rating, review text and the site's own relative date; the count varies by response, so this
16794
+ * retries a few times and keeps the longest list seen. A FOURTH reading of searchPlaces' door
16793
16795
  * (the same record getPlace reads, one section further in), not the listugcposts route the
16794
16796
  * survey planned: that route needed a session token minted by a place-page bootstrap that was
16795
16797
  * never cracked, but the same reviews the token would have fetched are already sitting in the
@@ -16976,14 +16978,19 @@ interface GoogleNewsFullCoverage {
16976
16978
 
16977
16979
  /**
16978
16980
  * Everything Google News has indexed from one publisher — `publisher` is a domain like
16979
- * "reuters.com" or "apnews.com" — newest first, optionally narrowed with `query` the same way
16980
- * `searchNews` takes one. Built on the search door with a `site:` filter
16981
+ * "reuters.com" or a name like "Reuters" — newest first, optionally narrowed with `query` the
16982
+ * same way `searchNews` takes one. Built on the search door with a `site:` filter
16981
16983
  * (`/rss/search?q=site:<publisher> <query>`), NOT on the route that looks like its own:
16982
16984
  * `/rss/headlines/section/publication/<NAME>` answers 200 with the Top stories feed
16983
16985
  * byte-for-byte for a name it cannot resolve, so it would look like it worked and be wrong for
16984
- * every publisher. Measured 2026-09-15: `site:reuters.com tesla` returned 100 items of which
16985
- * 100 carried a `<source>` domain on `reuters.com`. `locale` `{ hl, gl, ceid }` — asks for
16986
- * another country/language edition; omitted, the US English one.
16986
+ * every publisher. `site:` takes a DOMAIN, so a NAME is resolved to one through the search
16987
+ * door first (the host dominating that name's own search results) rather than passed straight
16988
+ * to `site:`, where it is mis-parsed as a TLD plus a keyword (measured 2026-09-17: "Al
16989
+ * Jazeera" returned 100 rows, all from the .al ccTLD) — a name the door cannot resolve is
16990
+ * refused rather than answered with the wrong newsroom. Measured 2026-09-15: `site:reuters.com
16991
+ * tesla` returned 100 items of which 100 carried a `<source>` domain on `reuters.com`.
16992
+ * `locale` — `{ hl, gl, ceid }` — asks for another country/language edition; omitted, the US
16993
+ * English one.
16987
16994
  */
16988
16995
  listPublisherHeadlines(publisher: string, query?: string, locale?: GoogleNewsLocaleArg): Promise<GoogleNewsPublisherHeadlines>;
16989
16996
 
@@ -19098,6 +19105,127 @@ interface HellotendService {
19098
19105
  }
19099
19106
  }
19100
19107
 
19108
+ declare namespace BowmarkProvider_higgsfield {
19109
+ // ── Higgsfield — the unit's own declarations, verbatim ──
19110
+ interface higgsfieldModel {
19111
+ id: string;
19112
+ path: string;
19113
+ kind: "image" | "video";
19114
+ needsInputImage: boolean;
19115
+ family: string;
19116
+ measuredUsd: number;
19117
+ }
19118
+
19119
+ interface higgsfieldEstimate {
19120
+ model: string;
19121
+ credits: number;
19122
+ usd: number;
19123
+ discountUsd: number | null;
19124
+ }
19125
+
19126
+ interface higgsfieldRequest {
19127
+ requestId: string;
19128
+ status: "queued" | "in_progress" | "completed" | "failed" | "nsfw" | "canceled";
19129
+ imageUrls: string[];
19130
+ videoUrl: string | null;
19131
+ error: string | null;
19132
+ statusUrl: string | null;
19133
+ cancelUrl: string | null;
19134
+ }
19135
+
19136
+ interface higgsfieldGeneration extends higgsfieldRequest {
19137
+ model: string;
19138
+ estimate: higgsfieldEstimate;
19139
+ settled: boolean;
19140
+ files: higgsfieldSavedFile[]; // the same media, kept in YOUR account — Higgsfield's own links expire
19141
+ warnings: string[];
19142
+ }
19143
+
19144
+ // Bowmark's own saved-file handle (`SavedFile`), spelled out here because the
19145
+ // published surface has to stand alone. Manage these with `bowmark.files.*`;
19146
+ // `url` is presigned and `bowmark.files.url(id)` mints a fresh one.
19147
+ interface higgsfieldSavedFile {
19148
+ id: string;
19149
+ name: string;
19150
+ contentType: string;
19151
+ bytes: number;
19152
+ url: string;
19153
+ expiresAt: string;
19154
+ }
19155
+
19156
+ /**
19157
+ * Higgsfield's own documented generation API — turns a text prompt (or a prompt plus an input
19158
+ * image) into images or video across 25 models live on this account, including Kling 2.5
19159
+ * Turbo, MiniMax Hailuo 02/2.3, WAN 2.5 and Higgsfield's own Soul and DoP. Every call is
19160
+ * quoted by Higgsfield before it is submitted, and only a generation watched to completion is
19161
+ * charged.
19162
+ */
19163
+ interface Unit {
19164
+ /**
19165
+ * Lists every generation model Bowmark's Higgsfield account can actually call, with what each
19166
+ * one produces, whether it needs an input image, and what one call was measured to cost.
19167
+ * Measured against the live API on 2026-09-16 by estimating all 48 endpoints Higgsfield's
19168
+ * OpenAPI document publishes: 25 answered, and the rest refused as model_not_found,
19169
+ * model_blocked or model_disabled — so this is the callable set, not the documented one. Takes
19170
+ * no arguments and makes no request.
19171
+ */
19172
+ listModels(): Promise<higgsfieldModel[]>;
19173
+
19174
+ /**
19175
+ * Asks Higgsfield what one generation will cost, for exactly the parameters you would submit,
19176
+ * before submitting it — the vendor's own credit and US-dollar figure for this account, with
19177
+ * any discount already applied. Generates nothing, produces no media and costs nothing.
19178
+ * `model` defaults to `soul`. This is the same quote the generate functions take internally
19179
+ * and charge from, so it is the honest answer to "what am I about to spend".
19180
+ */
19181
+ estimateCost(args: { prompt: string; model?: string; [param: string]: unknown }): Promise<higgsfieldEstimate>;
19182
+
19183
+ /**
19184
+ * Generates one or more images from a text prompt and waits for them, returning the finished
19185
+ * image URLs together with what Higgsfield quoted. `model` defaults to `soul` ($0.094
19186
+ * measured); `listModels()` has the rest. Any other key — `aspect_ratio`, `num_images`,
19187
+ * `input_images`, `output_format` — is passed to Higgsfield untouched, since each model takes
19188
+ * its own. Waits up to `waitMs` (default 90000, and never longer than the run's own ceiling)
19189
+ * for a terminal state. A wait always happens — a submit that never watches its own result is
19190
+ * a generation Higgsfield bills us for and nobody is charged for — so the floor is 20000.
19191
+ * **The finished images are copied into your Bowmark account automatically and come back on
19192
+ * `files` — use those URLs, not `imageUrls`.** Higgsfield deletes its own copy after about
19193
+ * seven days; a file in your account is yours until you delete it, and costs storage while you
19194
+ * keep it. Pass `save: false` to skip the copy and take the expiring links. Uses Bowmark's
19195
+ * Higgsfield key and charges the generation to your account; send your own key as the
19196
+ * `x-bowmark-vendor-key-higgsfield` header instead.
19197
+ */
19198
+ generateImage(args: string | { prompt: string; model?: string; waitMs?: number; save?: boolean; [param: string]: unknown }): Promise<higgsfieldGeneration>;
19199
+
19200
+ /**
19201
+ * Generates a video from a text prompt — or from a prompt plus an input image on the
19202
+ * image-to-video models — and waits for it, returning the finished video URL together with
19203
+ * what Higgsfield quoted. `model` defaults to `hailuo-02-standard` ($0.090 measured, the
19204
+ * cheapest live video model); Kling 2.1 Master is $1.400, so check `listModels()` or
19205
+ * `estimateCost` before reaching for a big one. Any other key (`duration`, `resolution`,
19206
+ * `input_images`) is passed to Higgsfield untouched. Waits up to `waitMs` (default 90000,
19207
+ * clamped to the run's own ceiling). Video usually renders past that, which is normal: you get
19208
+ * `settled: false` and the handle, and collect it with `getRequestStatus`. **A call that waits
19209
+ * copies the finished video into your Bowmark account and returns it on `files` — use that
19210
+ * URL, not `videoUrl`**, because Higgsfield deletes its own copy after about seven days. Pass
19211
+ * `save: false` to skip the copy. A call whose wait runs out saves nothing, since nothing has
19212
+ * rendered yet — collect and download it yourself.
19213
+ */
19214
+ generateVideo(args: string | { prompt: string; model?: string; waitMs?: number; save?: boolean; [param: string]: unknown }): Promise<higgsfieldGeneration>;
19215
+
19216
+ /**
19217
+ * Checks one submitted generation by its `requestId` and returns its current state plus any
19218
+ * finished media. Use it after a generate call that returned `settled: false`, which means the
19219
+ * wait ran out while the generation was still running. `status` is Higgsfield's own: `queued`,
19220
+ * `in_progress`, `completed`, `failed`, `nsfw` (refused by moderation — reword the prompt) or
19221
+ * `canceled`. This is a free read and it never charges you, even for a generation it finds
19222
+ * completed — and for the same reason it never copies the media into your account either, so
19223
+ * the URLs it returns are Higgsfield's own and expire after about seven days.
19224
+ */
19225
+ getRequestStatus(args: string | { requestId: string }): Promise<higgsfieldRequest>;
19226
+ }
19227
+ }
19228
+
19101
19229
  declare namespace BowmarkProvider_highlandhomes {
19102
19230
  // ── Highland Homes — the unit's own declarations, verbatim ──
19103
19231
  interface HighlandHomesSearchFilter {
@@ -26175,6 +26303,32 @@ interface OliverwineryShippingAvailability {
26175
26303
  }
26176
26304
  }
26177
26305
 
26306
+ declare namespace BowmarkProvider_onthemarket {
26307
+ // ── OnTheMarket — the unit's own declarations, verbatim ──
26308
+ interface SearchArgs {
26309
+ location: string;
26310
+ type: "sale" | "rent";
26311
+ }
26312
+
26313
+ interface OnTheMarketProperty {
26314
+ id: string;
26315
+ title: string;
26316
+ price?: string;
26317
+ location: string;
26318
+ propertyType?: string; // the site's own labels — read the values off a result, never guess one from prose
26319
+ bedrooms?: number;
26320
+ bathrooms?: number;
26321
+ description?: string;
26322
+ url?: string;
26323
+ }
26324
+
26325
+ /** Search for residential property listings for sale or rent in the UK. */
26326
+ interface Unit {
26327
+ /** Search for residential properties by location and type (sale or rent) */
26328
+ search(args: SearchArgs): Promise<OnTheMarketProperty[]>;
26329
+ }
26330
+ }
26331
+
26178
26332
  declare namespace BowmarkProvider_othership {
26179
26333
  // ── Othership — the unit's own declarations, verbatim ──
26180
26334
  // Othership's OWN shapes — not a capability contract.
@@ -34873,6 +35027,51 @@ interface YoutubeSearchVideo {
34873
35027
  thumbnail: string | null;
34874
35028
  }
34875
35029
 
35030
+ interface YoutubeChannelRef {
35031
+ channelId: string;
35032
+ url: string;
35033
+ handle: string | null; // only set when the source we found it through carries one
35034
+ title: string | null; // only set coming off search; resolve_url gives no title
35035
+ subscriberCountText: string | null;
35036
+ thumbnail: string | null;
35037
+ }
35038
+
35039
+ interface YoutubeVideo {
35040
+ videoId: string;
35041
+ title: string;
35042
+ channel: string;
35043
+ channelId: string;
35044
+ description: string; // the full watch-page description, not a truncated snippet
35045
+ viewCount: number;
35046
+ likeCount: number | null; // null when the site itself hides it on this video
35047
+ lengthSeconds: number;
35048
+ publishDate: string | null; // ISO 8601
35049
+ uploadDate: string | null; // ISO 8601
35050
+ category: string | null;
35051
+ keywords: string[];
35052
+ isLiveNow: boolean; // live RIGHT NOW
35053
+ isLiveContent: boolean; // live now, or ever was (stays true for a finished stream's VOD)
35054
+ isUnlisted: boolean;
35055
+ thumbnails: { url: string; width: number; height: number }[];
35056
+ }
35057
+
35058
+ interface YoutubeComment {
35059
+ commentId: string;
35060
+ author: string;
35061
+ authorChannelId: string | null;
35062
+ text: string;
35063
+ likeCount: string; // YouTube's own abbreviated text, e.g. "316K" — never an exact number
35064
+ publishedTime: string; // YouTube's own relative phrase, e.g. "1 year ago"
35065
+ replyCount: number;
35066
+ isPinned: boolean;
35067
+ isHeartedByCreator: boolean;
35068
+ }
35069
+
35070
+ interface YoutubeCommentPage {
35071
+ comments: YoutubeComment[];
35072
+ continuation: string | null; // pass back as { continuation } for the next page; null on the last
35073
+ }
35074
+
34876
35075
  /**
34877
35076
  * A YouTube video's own caption transcript, read off the site's own Transcript panel —
34878
35077
  * timestamped lines plus the full text as one string. Language selection is not offered yet;
@@ -34894,6 +35093,36 @@ interface YoutubeSearchVideo {
34894
35093
  * the video has no caption track at all.
34895
35094
  */
34896
35095
  getTranscript(input: { video: string }): Promise<YoutubeTranscript>;
35096
+
35097
+ /**
35098
+ * Resolves a channel `@handle`, a channel/handle URL, or a plain channel name to its canonical
35099
+ * id — the door every other channel function here takes a channelId through. An `@handle` or
35100
+ * URL goes through YouTube's own `navigation/resolve_url` and returns just the id and
35101
+ * canonical URL (no title — that costs a second call, which `getChannel` makes). A plain name
35102
+ * runs a channel-filtered search and returns the first, best-matching channel with its title,
35103
+ * subscriber count and thumbnail. Returns null when nothing resolves — not a real answer to
35104
+ * build a `getChannel` call on.
35105
+ */
35106
+ findChannel(input: { query: string }): Promise<YoutubeChannelRef | null>;
35107
+
35108
+ /**
35109
+ * Everything the watch page says about one video without playing it: title, channel name and
35110
+ * id, full description, view count, like count, length in seconds, publish and upload dates,
35111
+ * category, the uploader's own keywords, every thumbnail size, and whether it is live now, was
35112
+ * ever live, or is unlisted. `video` is a bare 11-character video id or any
35113
+ * watch/shorts/embed/live/youtu.be URL, exactly as `getTranscript` takes it.
35114
+ */
35115
+ getVideo(input: { video: string }): Promise<YoutubeVideo>;
35116
+
35117
+ /**
35118
+ * What people said under a video — each comment's author, text, like count (YouTube's own
35119
+ * abbreviated text, e.g. "316K"), how long ago it was posted, its reply count, and whether the
35120
+ * thread is pinned or was hearted by the creator. `sortBy` picks YouTube's own "Top" or
35121
+ * "Newest" ordering (default Top) on the first call; pass back `continuation` alone — no
35122
+ * `video` needed, it is self-contained — to read the next page. `continuation` is null once
35123
+ * there are no more pages.
35124
+ */
35125
+ listComments(input: { video: string; sortBy?: "top" | "newest" } | { continuation: string }): Promise<YoutubeCommentPage>;
34897
35126
  }
34898
35127
  }
34899
35128
 
@@ -35863,7 +36092,6 @@ interface BowmarkProviders {
35863
36092
  boydsleep: BowmarkProvider_boydsleep.Unit;
35864
36093
  brius: BowmarkProvider_brius.Unit;
35865
36094
  brixton: BowmarkProvider_brixton.Unit;
35866
- browser_use: BowmarkProvider_browser_use.Unit;
35867
36095
  builder_strucsure_com: BowmarkProvider_builder_strucsure_com.Unit;
35868
36096
  bulletproof: BowmarkProvider_bulletproof.Unit;
35869
36097
  bungalow: BowmarkProvider_bungalow.Unit;
@@ -36004,6 +36232,7 @@ interface BowmarkProviders {
36004
36232
  heatherwood: BowmarkProvider_heatherwood.Unit;
36005
36233
  hellofresh: BowmarkProvider_hellofresh.Unit;
36006
36234
  hellotend: BowmarkProvider_hellotend.Unit;
36235
+ higgsfield: BowmarkProvider_higgsfield.Unit;
36007
36236
  highlandhomes: BowmarkProvider_highlandhomes.Unit;
36008
36237
  hilton: BowmarkProvider_hilton.Unit;
36009
36238
  historymaker: BowmarkProvider_historymaker.Unit;
@@ -36090,6 +36319,7 @@ interface BowmarkProviders {
36090
36319
  nvisioncenters: BowmarkProvider_nvisioncenters.Unit;
36091
36320
  oanda: BowmarkProvider_oanda.Unit;
36092
36321
  oliverwinery: BowmarkProvider_oliverwinery.Unit;
36322
+ onthemarket: BowmarkProvider_onthemarket.Unit;
36093
36323
  othership: BowmarkProvider_othership.Unit;
36094
36324
  otto: BowmarkProvider_otto.Unit;
36095
36325
  outdoorresearch: BowmarkProvider_outdoorresearch.Unit;
@@ -87970,6 +88200,7 @@ interface BowmarkLibrary {
87970
88200
  search: BowmarkCapability_search.Unit;
87971
88201
  sheds: BowmarkCapability_sheds.Unit;
87972
88202
  shipping: BowmarkCapability_shipping.Unit;
88203
+ stream_channel: BowmarkCapability_stream_channel.Unit;
87973
88204
  stream_highlights: BowmarkCapability_stream_highlights.Unit;
87974
88205
  tariff: BowmarkCapability_tariff.Unit;
87975
88206
  text_to_speech: BowmarkCapability_text_to_speech.Unit;
@@ -5,10 +5,10 @@
5
5
  // declares no readable argument shape — not an absent one, which is what the
6
6
  // guard fails closed on.
7
7
  //
8
- // Manifest version: 33a70781b68188bc68feb315e91e0c61cb56ecb49e10d82f223e4feb9d6b3399
9
- // 1103 checked, 20 unchecked.
8
+ // Manifest version: 83b6073de78d83a7366cd17844242d5703320faa6ea88973baea85a98639f7d0
9
+ // 1104 checked, 20 unchecked.
10
10
  export const VALIDATORS = {
11
- "version": "33a70781b68188bc68feb315e91e0c61cb56ecb49e10d82f223e4feb9d6b3399",
11
+ "version": "83b6073de78d83a7366cd17844242d5703320faa6ea88973baea85a98639f7d0",
12
12
  "units": {
13
13
  "booking_links": {
14
14
  "defs": {
@@ -2895,6 +2895,57 @@ export const VALIDATORS = {
2895
2895
  ]
2896
2896
  }
2897
2897
  },
2898
+ "stream_channel": {
2899
+ "defs": {
2900
+ "SetChannelOptions": {
2901
+ "k": "object",
2902
+ "props": [
2903
+ {
2904
+ "name": "platform",
2905
+ "schema": {
2906
+ "k": "literal",
2907
+ "v": "twitch"
2908
+ },
2909
+ "optional": true
2910
+ },
2911
+ {
2912
+ "name": "title",
2913
+ "schema": {
2914
+ "k": "string"
2915
+ },
2916
+ "optional": true
2917
+ },
2918
+ {
2919
+ "name": "language",
2920
+ "schema": {
2921
+ "k": "string"
2922
+ },
2923
+ "optional": true
2924
+ },
2925
+ {
2926
+ "name": "game",
2927
+ "schema": {
2928
+ "k": "string"
2929
+ },
2930
+ "optional": true
2931
+ }
2932
+ ]
2933
+ }
2934
+ },
2935
+ "functions": {
2936
+ "get": [],
2937
+ "set": [
2938
+ {
2939
+ "name": "options",
2940
+ "schema": {
2941
+ "k": "ref",
2942
+ "name": "SetChannelOptions"
2943
+ },
2944
+ "optional": false
2945
+ }
2946
+ ]
2947
+ }
2948
+ },
2898
2949
  "stream_highlights": {
2899
2950
  "defs": {
2900
2951
  "CreateHighlightOptions": {
@@ -5462,6 +5513,88 @@ export const VALIDATORS = {
5462
5513
  "optional": false
5463
5514
  }
5464
5515
  ],
5516
+ "listAccessories": [
5517
+ {
5518
+ "name": "category",
5519
+ "schema": {
5520
+ "k": "union",
5521
+ "of": [
5522
+ {
5523
+ "k": "literal",
5524
+ "v": "cases-protection"
5525
+ },
5526
+ {
5527
+ "k": "literal",
5528
+ "v": "chargers-adapters"
5529
+ },
5530
+ {
5531
+ "k": "literal",
5532
+ "v": "headphones-speakers"
5533
+ },
5534
+ {
5535
+ "k": "literal",
5536
+ "v": "drives-storage"
5537
+ },
5538
+ {
5539
+ "k": "literal",
5540
+ "v": "mice-keyboards"
5541
+ },
5542
+ {
5543
+ "k": "literal",
5544
+ "v": "gaming"
5545
+ },
5546
+ {
5547
+ "k": "literal",
5548
+ "v": "office"
5549
+ },
5550
+ {
5551
+ "k": "literal",
5552
+ "v": "travel-essentials"
5553
+ },
5554
+ {
5555
+ "k": "literal",
5556
+ "v": "college-essentials"
5557
+ },
5558
+ {
5559
+ "k": "literal",
5560
+ "v": "software"
5561
+ },
5562
+ {
5563
+ "k": "literal",
5564
+ "v": "homekit"
5565
+ },
5566
+ {
5567
+ "k": "literal",
5568
+ "v": "content-creation"
5569
+ },
5570
+ {
5571
+ "k": "literal",
5572
+ "v": "health-fitness"
5573
+ },
5574
+ {
5575
+ "k": "literal",
5576
+ "v": "new-arrivals"
5577
+ },
5578
+ {
5579
+ "k": "literal",
5580
+ "v": "made-by-apple"
5581
+ },
5582
+ {
5583
+ "k": "literal",
5584
+ "v": "accessibility"
5585
+ }
5586
+ ]
5587
+ },
5588
+ "optional": false
5589
+ },
5590
+ {
5591
+ "name": "page",
5592
+ "schema": {
5593
+ "k": "number"
5594
+ },
5595
+ "optional": true
5596
+ }
5597
+ ],
5465
5598
  "getTradeInEstimate": [
5466
5599
  {
5467
5600
  "name": "model",
@@ -7325,7 +7458,7 @@ export const VALIDATORS = {
7325
7458
  "listInquiryServices": [],
7326
7459
  "getInquiryServiceDetails": [
7327
7460
  {
7328
- "name": "serviceName",
7461
+ "name": "service",
7329
7462
  "schema": {
7330
7463
  "k": "string"
7331
7464
  },
@@ -7944,206 +8077,6 @@ export const VALIDATORS = {
7944
8077
  ]
7945
8078
  }
7946
8079
  },
7947
- "providers.browser_use": {
7948
- "defs": {
7949
- "BrowserUseCreateRunArgs": {
7950
- "k": "object",
7951
- "props": [
7952
- {
7953
- "name": "task",
7954
- "schema": {
7955
- "k": "string"
7956
- },
7957
- "optional": false
7958
- },
7959
- {
7960
- "name": "model",
7961
- "schema": {
7962
- "k": "string"
7963
- },
7964
- "optional": true
7965
- },
7966
- {
7967
- "name": "sessionId",
7968
- "schema": {
7969
- "k": "string"
7970
- },
7971
- "optional": true
7972
- },
7973
- {
7974
- "name": "maxCostUsd",
7975
- "schema": {
7976
- "k": "number"
7977
- },
7978
- "optional": true
7979
- },
7980
- {
7981
- "name": "proxyCountryCode",
7982
- "schema": {
7983
- "k": "string"
7984
- },
7985
- "optional": true
7986
- }
7987
- ]
7988
- },
7989
- "BrowserUseEventsArgs": {
7990
- "k": "object",
7991
- "props": [
7992
- {
7993
- "name": "runId",
7994
- "schema": {
7995
- "k": "string"
7996
- },
7997
- "optional": false
7998
- },
7999
- {
8000
- "name": "after",
8001
- "schema": {
8002
- "k": "number"
8003
- },
8004
- "optional": true
8005
- },
8006
- {
8007
- "name": "limit",
8008
- "schema": {
8009
- "k": "number"
8010
- },
8011
- "optional": true
8012
- }
8013
- ]
8014
- },
8015
- "BrowserUseQueueArgs": {
8016
- "k": "object",
8017
- "props": [
8018
- {
8019
- "name": "sessionId",
8020
- "schema": {
8021
- "k": "string"
8022
- },
8023
- "optional": false
8024
- },
8025
- {
8026
- "name": "text",
8027
- "schema": {
8028
- "k": "string"
8029
- },
8030
- "optional": false
8031
- },
8032
- {
8033
- "name": "interrupt",
8034
- "schema": {
8035
- "k": "boolean"
8036
- },
8037
- "optional": true
8038
- }
8039
- ]
8040
- }
8041
- },
8042
- "functions": {
8043
- "createRun": [
8044
- {
8045
- "name": "args",
8046
- "schema": {
8047
- "k": "ref",
8048
- "name": "BrowserUseCreateRunArgs"
8049
- },
8050
- "optional": false
8051
- }
8052
- ],
8053
- "getRun": [
8054
- {
8055
- "name": "runId",
8056
- "schema": {
8057
- "k": "string"
8058
- },
8059
- "optional": false
8060
- }
8061
- ],
8062
- "getRunStatus": [
8063
- {
8064
- "name": "runId",
8065
- "schema": {
8066
- "k": "string"
8067
- },
8068
- "optional": false
8069
- }
8070
- ],
8071
- "listRunEvents": [
8072
- {
8073
- "name": "args",
8074
- "schema": {
8075
- "k": "ref",
8076
- "name": "BrowserUseEventsArgs"
8077
- },
8078
- "optional": false
8079
- }
8080
- ],
8081
- "listSessionRuns": [
8082
- {
8083
- "name": "sessionId",
8084
- "schema": {
8085
- "k": "string"
8086
- },
8087
- "optional": false
8088
- }
8089
- ],
8090
- "cancelRun": [
8091
- {
8092
- "name": "runId",
8093
- "schema": {
8094
- "k": "string"
8095
- },
8096
- "optional": false
8097
- }
8098
- ],
8099
- "getSession": [
8100
- {
8101
- "name": "sessionId",
8102
- "schema": {
8103
- "k": "string"
8104
- },
8105
- "optional": false
8106
- }
8107
- ],
8108
- "queueMessage": [
8109
- {
8110
- "name": "args",
8111
- "schema": {
8112
- "k": "ref",
8113
- "name": "BrowserUseQueueArgs"
8114
- },
8115
- "optional": false
8116
- }
8117
- ],
8118
- "findSessionBrowser": [
8119
- {
8120
- "name": "sessionId",
8121
- "schema": {
8122
- "k": "string"
8123
- },
8124
- "optional": false
8125
- }
8126
- ],
8127
- "getBrowser": [
8128
- {
8129
- "name": "browserId",
8130
- "schema": {
8131
- "k": "string"
8132
- },
8133
- "optional": false
8134
- }
8135
- ],
8136
- "stopBrowser": [
8137
- {
8138
- "name": "browserId",
8139
- "schema": {
8140
- "k": "string"
8141
- },
8142
- "optional": false
8143
- }
8144
- ]
8145
- }
8146
- },
8147
8080
  "providers.builder_strucsure_com": {
8148
8081
  "defs": {},
8149
8082
  "functions": {
@@ -16837,6 +16770,166 @@ export const VALIDATORS = {
16837
16770
  ]
16838
16771
  }
16839
16772
  },
16773
+ "providers.higgsfield": {
16774
+ "defs": {},
16775
+ "functions": {
16776
+ "listModels": [],
16777
+ "estimateCost": [
16778
+ {
16779
+ "name": "args",
16780
+ "schema": {
16781
+ "k": "object",
16782
+ "props": [
16783
+ {
16784
+ "name": "prompt",
16785
+ "schema": {
16786
+ "k": "string"
16787
+ },
16788
+ "optional": false
16789
+ },
16790
+ {
16791
+ "name": "model",
16792
+ "schema": {
16793
+ "k": "string"
16794
+ },
16795
+ "optional": true
16796
+ }
16797
+ ],
16798
+ "index": {
16799
+ "k": "any"
16800
+ }
16801
+ },
16802
+ "optional": false
16803
+ }
16804
+ ],
16805
+ "generateImage": [
16806
+ {
16807
+ "name": "args",
16808
+ "schema": {
16809
+ "k": "union",
16810
+ "of": [
16811
+ {
16812
+ "k": "string"
16813
+ },
16814
+ {
16815
+ "k": "object",
16816
+ "props": [
16817
+ {
16818
+ "name": "prompt",
16819
+ "schema": {
16820
+ "k": "string"
16821
+ },
16822
+ "optional": false
16823
+ },
16824
+ {
16825
+ "name": "model",
16826
+ "schema": {
16827
+ "k": "string"
16828
+ },
16829
+ "optional": true
16830
+ },
16831
+ {
16832
+ "name": "waitMs",
16833
+ "schema": {
16834
+ "k": "number"
16835
+ },
16836
+ "optional": true
16837
+ },
16838
+ {
16839
+ "name": "save",
16840
+ "schema": {
16841
+ "k": "boolean"
16842
+ },
16843
+ "optional": true
16844
+ }
16845
+ ],
16846
+ "index": {
16847
+ "k": "any"
16848
+ }
16849
+ }
16850
+ ]
16851
+ },
16852
+ "optional": false
16853
+ }
16854
+ ],
16855
+ "generateVideo": [
16856
+ {
16857
+ "name": "args",
16858
+ "schema": {
16859
+ "k": "union",
16860
+ "of": [
16861
+ {
16862
+ "k": "string"
16863
+ },
16864
+ {
16865
+ "k": "object",
16866
+ "props": [
16867
+ {
16868
+ "name": "prompt",
16869
+ "schema": {
16870
+ "k": "string"
16871
+ },
16872
+ "optional": false
16873
+ },
16874
+ {
16875
+ "name": "model",
16876
+ "schema": {
16877
+ "k": "string"
16878
+ },
16879
+ "optional": true
16880
+ },
16881
+ {
16882
+ "name": "waitMs",
16883
+ "schema": {
16884
+ "k": "number"
16885
+ },
16886
+ "optional": true
16887
+ },
16888
+ {
16889
+ "name": "save",
16890
+ "schema": {
16891
+ "k": "boolean"
16892
+ },
16893
+ "optional": true
16894
+ }
16895
+ ],
16896
+ "index": {
16897
+ "k": "any"
16898
+ }
16899
+ }
16900
+ ]
16901
+ },
16902
+ "optional": false
16903
+ }
16904
+ ],
16905
+ "getRequestStatus": [
16906
+ {
16907
+ "name": "args",
16908
+ "schema": {
16909
+ "k": "union",
16910
+ "of": [
16911
+ {
16912
+ "k": "string"
16913
+ },
16914
+ {
16915
+ "k": "object",
16916
+ "props": [
16917
+ {
16918
+ "name": "requestId",
16919
+ "schema": {
16920
+ "k": "string"
16921
+ },
16922
+ "optional": false
16923
+ }
16924
+ ]
16925
+ }
16926
+ ]
16927
+ },
16928
+ "optional": false
16929
+ }
16930
+ ]
16931
+ }
16932
+ },
16840
16933
  "providers.highlandhomes": {
16841
16934
  "defs": {
16842
16935
  "HighlandHomesSearchFilter": {
@@ -22589,6 +22682,51 @@ export const VALIDATORS = {
22589
22682
  ]
22590
22683
  }
22591
22684
  },
22685
+ "providers.onthemarket": {
22686
+ "defs": {
22687
+ "SearchArgs": {
22688
+ "k": "object",
22689
+ "props": [
22690
+ {
22691
+ "name": "location",
22692
+ "schema": {
22693
+ "k": "string"
22694
+ },
22695
+ "optional": false
22696
+ },
22697
+ {
22698
+ "name": "type",
22699
+ "schema": {
22700
+ "k": "union",
22701
+ "of": [
22702
+ {
22703
+ "k": "literal",
22704
+ "v": "sale"
22705
+ },
22706
+ {
22707
+ "k": "literal",
22708
+ "v": "rent"
22709
+ }
22710
+ ]
22711
+ },
22712
+ "optional": false
22713
+ }
22714
+ ]
22715
+ }
22716
+ },
22717
+ "functions": {
22718
+ "search": [
22719
+ {
22720
+ "name": "args",
22721
+ "schema": {
22722
+ "k": "ref",
22723
+ "name": "SearchArgs"
22724
+ },
22725
+ "optional": false
22726
+ }
22727
+ ]
22728
+ }
22729
+ },
22592
22730
  "providers.othership": {
22593
22731
  "defs": {},
22594
22732
  "functions": {
@@ -32994,6 +33132,94 @@ export const VALIDATORS = {
32994
33132
  },
32995
33133
  "optional": false
32996
33134
  }
33135
+ ],
33136
+ "findChannel": [
33137
+ {
33138
+ "name": "input",
33139
+ "schema": {
33140
+ "k": "object",
33141
+ "props": [
33142
+ {
33143
+ "name": "query",
33144
+ "schema": {
33145
+ "k": "string"
33146
+ },
33147
+ "optional": false
33148
+ }
33149
+ ]
33150
+ },
33151
+ "optional": false
33152
+ }
33153
+ ],
33154
+ "getVideo": [
33155
+ {
33156
+ "name": "input",
33157
+ "schema": {
33158
+ "k": "object",
33159
+ "props": [
33160
+ {
33161
+ "name": "video",
33162
+ "schema": {
33163
+ "k": "string"
33164
+ },
33165
+ "optional": false
33166
+ }
33167
+ ]
33168
+ },
33169
+ "optional": false
33170
+ }
33171
+ ],
33172
+ "listComments": [
33173
+ {
33174
+ "name": "input",
33175
+ "schema": {
33176
+ "k": "union",
33177
+ "of": [
33178
+ {
33179
+ "k": "object",
33180
+ "props": [
33181
+ {
33182
+ "name": "video",
33183
+ "schema": {
33184
+ "k": "string"
33185
+ },
33186
+ "optional": false
33187
+ },
33188
+ {
33189
+ "name": "sortBy",
33190
+ "schema": {
33191
+ "k": "union",
33192
+ "of": [
33193
+ {
33194
+ "k": "literal",
33195
+ "v": "top"
33196
+ },
33197
+ {
33198
+ "k": "literal",
33199
+ "v": "newest"
33200
+ }
33201
+ ]
33202
+ },
33203
+ "optional": true
33204
+ }
33205
+ ]
33206
+ },
33207
+ {
33208
+ "k": "object",
33209
+ "props": [
33210
+ {
33211
+ "name": "continuation",
33212
+ "schema": {
33213
+ "k": "string"
33214
+ },
33215
+ "optional": false
33216
+ }
33217
+ ]
33218
+ }
33219
+ ]
33220
+ },
33221
+ "optional": false
33222
+ }
32997
33223
  ]
32998
33224
  }
32999
33225
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bowmark/web",
3
- "version": "1.23.0",
3
+ "version": "1.24.1",
4
4
  "type": "module",
5
5
  "description": "The public client for the Bowmark capability library — real TypeScript for the whole bowmark.* surface, with no Bowmark source on the caller's disk. ZERO runtime dependencies, deliberately and permanently.",
6
6
  "license": "MIT",