@bowmark/web 1.12.2 → 1.12.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -3
- package/{src → dist}/generated/library.d.ts +409 -11
- package/dist/generated/validators.d.ts +2 -0
- package/dist/generated/validators.js +23430 -0
- package/dist/guard.d.ts +64 -0
- package/dist/guard.js +174 -0
- package/dist/index.d.ts +29 -0
- package/{src/index.ts → dist/index.js} +7 -33
- package/dist/session.d.ts +46 -0
- package/dist/session.js +153 -0
- package/dist/transport.d.ts +150 -0
- package/dist/transport.js +183 -0
- package/dist/validate.d.ts +132 -0
- package/dist/validate.js +278 -0
- package/package.json +10 -6
- package/src/generated/validators.ts +0 -23104
- package/src/guard.ts +0 -198
- package/src/session.ts +0 -194
- package/src/transport.ts +0 -342
- package/src/validate.ts +0 -371
package/README.md
CHANGED
|
@@ -18,9 +18,13 @@ lmstudio://add_mcp?name=bowmark&config=eyJ1cmwiOiJodHRwczovL2FwaS5ib3dtYXJrLmFpL
|
|
|
18
18
|
> `bowmark-web` and `bowmark-web-stubs` on PyPI at the same version. The plan that built it
|
|
19
19
|
> is deleted; the reasoning is in the four
|
|
20
20
|
> [`docs/decisions/2026-08-06-*`](../../../docs/decisions/) records and the enforceable half
|
|
21
|
-
> is [`.claude/rules/public-types.md`](../../../.claude/rules/public-types.md).
|
|
22
|
-
>
|
|
23
|
-
>
|
|
21
|
+
> is [`.claude/rules/public-types.md`](../../../.claude/rules/public-types.md). Since
|
|
22
|
+
> 2026-09-01 the TARBALL ships compiled `dist/`, not raw `src/` — see
|
|
23
|
+
> [`docs/decisions/2026-09-01-the-published-npm-client-ships-compiled-js.md`](../../../docs/decisions/2026-09-01-the-published-npm-client-ships-compiled-js.md).
|
|
24
|
+
> **What would make THIS doc wrong:** the declarations moving out into a second package,
|
|
25
|
+
> a runtime dependency landing in `package.json`, or a build step reappearing where a
|
|
26
|
+
> CONSUMER or this MONOREPO has to run it — the one that ships is at publish time only,
|
|
27
|
+
> in the public mirror's own CI, and neither of those two ever sees it.
|
|
24
28
|
|
|
25
29
|
```sh
|
|
26
30
|
npm i @bowmark/web
|
|
@@ -226,6 +230,35 @@ refuses one, with no exception set — an exception would be a declaration that
|
|
|
226
230
|
parameter is uncallable. Found once, on `pizzahut.priceOrder`, by generating validators
|
|
227
231
|
for all 253 typed parameters.
|
|
228
232
|
|
|
233
|
+
## What ships is compiled, not `src/` verbatim
|
|
234
|
+
|
|
235
|
+
`main`/`types` point at `dist/index.{js,d.ts}`. `dist/` is never committed — it does not
|
|
236
|
+
exist in this workspace and does not exist in the public mirror's git history either — it
|
|
237
|
+
is produced once, in the mirror's own `publish.yml`, by `npm run build`
|
|
238
|
+
(`scripts/build.mjs`, `tsconfig.build.json`), immediately before `npm publish`. Nobody
|
|
239
|
+
runs it but that one CI job:
|
|
240
|
+
|
|
241
|
+
- **This workspace never does.** `pnpm typecheck` is `tsc -p tsconfig.json --noEmit` —
|
|
242
|
+
reads `src/` directly, emits nothing, unaffected.
|
|
243
|
+
- **A consumer never does.** `npm i @bowmark/web` installs the already-compiled `dist/`;
|
|
244
|
+
there is still no build step on their side, which is the property this package has
|
|
245
|
+
always promised.
|
|
246
|
+
|
|
247
|
+
Why compiled at all: Node refuses to strip types out of a `.ts` file found inside
|
|
248
|
+
`node_modules`, so shipping `main: src/index.ts` made plain `node app.mjs` fail with
|
|
249
|
+
`ERR_UNSUPPORTED_NODE_MODULES_TYPE_STRIPPING` for every consumer who was not already on
|
|
250
|
+
`tsx`, Bun, or a bundler.
|
|
251
|
+
[`docs/decisions/2026-09-01-the-published-npm-client-ships-compiled-js.md`](../../../docs/decisions/2026-09-01-the-published-npm-client-ships-compiled-js.md).
|
|
252
|
+
|
|
253
|
+
**One thing `tsc`'s declaration emit does not do on its own, and `build.mjs` does by
|
|
254
|
+
hand:** `src/generated/library.d.ts` is ambient (no imports, no exports — see below) and
|
|
255
|
+
`index.ts` reaches it only with `/// <reference path="./generated/library.d.ts" />`. tsc
|
|
256
|
+
consumes that directive for this package's own compile but does not carry it into the
|
|
257
|
+
emitted `dist/index.d.ts`. Left alone, a downstream `tsc` never loads `library.d.ts` at
|
|
258
|
+
all and `BowmarkLibrary` — the type this package exists to ship — reads as `Cannot find
|
|
259
|
+
name`. `build.mjs` re-inserts the reference line and copies `library.d.ts` into
|
|
260
|
+
`dist/generated/` verbatim (it has nothing to compile).
|
|
261
|
+
|
|
229
262
|
## Regenerating
|
|
230
263
|
|
|
231
264
|
```bash
|
|
@@ -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:
|
|
9
|
-
//
|
|
8
|
+
// Manifest version: 7ac4a9084853ee226f56e4964cb0bb95339c8375142eebd03526a4d6651ae380
|
|
9
|
+
// 39 capabilities, 274 providers, 707 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
|
|
@@ -197,6 +197,53 @@ type CallOptions = {
|
|
|
197
197
|
}
|
|
198
198
|
}
|
|
199
199
|
|
|
200
|
+
declare namespace BowmarkCapability_costume_size_check {
|
|
201
|
+
// ── Check one costume character's stock at one size, across Target, Walmart, and Spirit Halloween — the unit's own declarations, verbatim ──
|
|
202
|
+
interface RetailerSizeMatch {
|
|
203
|
+
title: string
|
|
204
|
+
url: string
|
|
205
|
+
price: { amount: number; currency: string } | null
|
|
206
|
+
inStock: boolean
|
|
207
|
+
}
|
|
208
|
+
interface RetailerSizeResult {
|
|
209
|
+
matched: RetailerSizeMatch | null // null + incomplete=false means this retailer
|
|
210
|
+
// answered and has no listing in this size
|
|
211
|
+
incomplete: boolean // true means this retailer's call never
|
|
212
|
+
// answered — matched is NOT a stockout then
|
|
213
|
+
}
|
|
214
|
+
interface CostumeSizeCheck {
|
|
215
|
+
character: string
|
|
216
|
+
size: string
|
|
217
|
+
retailers: { target: RetailerSizeResult; walmart: RetailerSizeResult; spirithalloween: RetailerSizeResult }
|
|
218
|
+
warnings: string[]
|
|
219
|
+
}
|
|
220
|
+
type CallOptions = {
|
|
221
|
+
timeoutMs?: number // per-provider budget in ms, default 30000, clamped to 1000-55000.
|
|
222
|
+
// A provider slower than this is DROPPED from the results and
|
|
223
|
+
// NAMED in warnings — never silently absent
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* Given a costume character and a size, fans out to Target, Walmart, and Spirit Halloween and
|
|
228
|
+
* reports whether each retailer has that exact character-and-size combination in stock right
|
|
229
|
+
* now — the per-size question a plain product search can't answer, because Target and Walmart
|
|
230
|
+
* bake size into a free-text title and Spirit Halloween only exposes its full size matrix on
|
|
231
|
+
* the product page.
|
|
232
|
+
*/
|
|
233
|
+
interface Unit {
|
|
234
|
+
/**
|
|
235
|
+
* Checks whether one costume character exists in one size, right now, at Target, Walmart, and
|
|
236
|
+
* Spirit Halloween. `retailers.<name>.matched` is the listing that named both the character
|
|
237
|
+
* and the size, or null when that retailer answered and has none. `incomplete: true` means
|
|
238
|
+
* that retailer's own call never answered — a missed deadline or an error — so `matched: null`
|
|
239
|
+
* there is NOT a stockout; nothing was learned. Never throws on one or two retailers being
|
|
240
|
+
* unreachable — the surviving legs still answer and the dropped ones are named in `warnings`;
|
|
241
|
+
* throws only when all three failed.
|
|
242
|
+
*/
|
|
243
|
+
checkSize(args: { character: string; size: string }): Promise<CostumeSizeCheck>;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
|
|
200
247
|
declare namespace BowmarkCapability_coworking {
|
|
201
248
|
// ── Coworking space day passes — the unit's own declarations, verbatim ──
|
|
202
249
|
type CoworkingDayPass = {
|
|
@@ -1865,7 +1912,7 @@ type CallOptions = {
|
|
|
1865
1912
|
declare namespace BowmarkCapability_retail {
|
|
1866
1913
|
// ── Retail (general merchandise, multi-store) — the unit's own declarations, verbatim ──
|
|
1867
1914
|
type RetailOffer = {
|
|
1868
|
-
store: "walmart" | "target"
|
|
1915
|
+
store: "walmart" | "target" | "bestbuy" // where this offer is from
|
|
1869
1916
|
title: string // the product as the store lists it
|
|
1870
1917
|
price: number | null // USD; null if unpriced
|
|
1871
1918
|
wasPrice: number | null // the pre-markdown price, when the store publishes one
|
|
@@ -1887,16 +1934,19 @@ type CallOptions = {
|
|
|
1887
1934
|
}
|
|
1888
1935
|
|
|
1889
1936
|
/**
|
|
1890
|
-
* General-merchandise retail across Walmart and
|
|
1891
|
-
* parallel and returned price-sorted, so an agent can answer 'where can I actually buy
|
|
1892
|
-
* and what does it cost' without querying each store by hand.
|
|
1937
|
+
* General-merchandise retail across Walmart, Target and Best Buy — one keyword search, fanned
|
|
1938
|
+
* out in parallel and returned price-sorted, so an agent can answer 'where can I actually buy
|
|
1939
|
+
* this and what does it cost' without querying each store by hand. Best Buy's leg needs the
|
|
1940
|
+
* caller's own Best Buy developer key; without one the search still returns Walmart + Target
|
|
1941
|
+
* with a `warnings` entry naming the drop.
|
|
1893
1942
|
*/
|
|
1894
1943
|
interface Unit {
|
|
1895
1944
|
/**
|
|
1896
|
-
* Searches Walmart and
|
|
1897
|
-
* offers across
|
|
1898
|
-
* store that did not answer
|
|
1899
|
-
*
|
|
1945
|
+
* Searches Walmart, Target and Best Buy in parallel for a keyword and returns one price-sorted
|
|
1946
|
+
* list of offers across all stores, each tagged with which store it's from. `warnings` names
|
|
1947
|
+
* any store that did not answer — including Best Buy when the caller holds no Best Buy
|
|
1948
|
+
* developer key — so a caller can tell a genuinely cheaper/only offer from one where a store
|
|
1949
|
+
* simply didn't answer.
|
|
1900
1950
|
*/
|
|
1901
1951
|
search(args: { query: string }): Promise<RetailSearchResult>;
|
|
1902
1952
|
}
|
|
@@ -4014,6 +4064,44 @@ interface AzureListServicesResult {
|
|
|
4014
4064
|
}
|
|
4015
4065
|
}
|
|
4016
4066
|
|
|
4067
|
+
declare namespace BowmarkProvider_bankmycell {
|
|
4068
|
+
// ── BankMyCell — the unit's own declarations, verbatim ──
|
|
4069
|
+
interface BankmycellOffer {
|
|
4070
|
+
merchant: string;
|
|
4071
|
+
price: number;
|
|
4072
|
+
paymentOptions: string;
|
|
4073
|
+
shippingOptions: { id: string; name: string }[];
|
|
4074
|
+
pricelockTimescale: string | null;
|
|
4075
|
+
paymentTimescale: string | null;
|
|
4076
|
+
checkoutLink: string;
|
|
4077
|
+
reviewsRating: number | null;
|
|
4078
|
+
reviewsCount: number | null;
|
|
4079
|
+
}
|
|
4080
|
+
interface BankmycellQuoteResult {
|
|
4081
|
+
deviceUrl: string;
|
|
4082
|
+
selections: { capacity: string | null; condition: string | null; carrier: string | null; lockedStatus: string | null };
|
|
4083
|
+
offers: BankmycellOffer[];
|
|
4084
|
+
unavailableMerchants: string[];
|
|
4085
|
+
summary: { minPrice: number | null; maxPrice: number | null; avgPrice: number | null; count: number };
|
|
4086
|
+
}
|
|
4087
|
+
|
|
4088
|
+
/**
|
|
4089
|
+
* Live trade-in offers for a phone/device from every merchant BankMyCell compares, for a
|
|
4090
|
+
* chosen capacity/condition/carrier — read off the same pricing endpoint the site's own sell
|
|
4091
|
+
* page polls, instead of parsing prose off the rendered page.
|
|
4092
|
+
*/
|
|
4093
|
+
interface Unit {
|
|
4094
|
+
/**
|
|
4095
|
+
* Reads live trade-in offers for the device at a bankmycell.com sell page (e.g.
|
|
4096
|
+
* .../sell/iphone-14-pro), from every merchant the site compares, for the given
|
|
4097
|
+
* capacity/condition/carrier/lockedStatus (each matched against that device's own option
|
|
4098
|
+
* labels, e.g. condition: "Flawless"). Any selection left out uses the page's own default
|
|
4099
|
+
* option for that attribute. THROWS if a selection names an option this device does not offer.
|
|
4100
|
+
*/
|
|
4101
|
+
getTradeInQuote(deviceUrl: string, selections?: { capacity?: string; condition?: string; carrier?: string; lockedStatus?: string }): Promise<BankmycellQuoteResult>;
|
|
4102
|
+
}
|
|
4103
|
+
}
|
|
4104
|
+
|
|
4017
4105
|
declare namespace BowmarkProvider_barletta {
|
|
4018
4106
|
// ── Barletta Boats — the unit's own declarations, verbatim ──
|
|
4019
4107
|
// Barletta's OWN shapes — not a capability contract.
|
|
@@ -6451,6 +6539,43 @@ interface ClasspassSearchResult {
|
|
|
6451
6539
|
}
|
|
6452
6540
|
}
|
|
6453
6541
|
|
|
6542
|
+
declare namespace BowmarkProvider_claudemarketplaces_com {
|
|
6543
|
+
// ── Claude Marketplaces — the unit's own declarations, verbatim ──
|
|
6544
|
+
interface claudeMarketplacesListing {
|
|
6545
|
+
url: string;
|
|
6546
|
+
kind: string;
|
|
6547
|
+
publisher: string;
|
|
6548
|
+
slug: string;
|
|
6549
|
+
name: string;
|
|
6550
|
+
description: string;
|
|
6551
|
+
applicationCategory: string | null;
|
|
6552
|
+
operatingSystem: string | null;
|
|
6553
|
+
codeRepository: string | null;
|
|
6554
|
+
featureList: string[];
|
|
6555
|
+
price: string | null;
|
|
6556
|
+
priceCurrency: string | null;
|
|
6557
|
+
}
|
|
6558
|
+
|
|
6559
|
+
/**
|
|
6560
|
+
* A directory of Claude plugin/MCP/skill marketplace listings — fetch one listing's structured
|
|
6561
|
+
* fields (name, description, category, repo, declared tools, price) instead of parsing its
|
|
6562
|
+
* page by hand.
|
|
6563
|
+
*/
|
|
6564
|
+
interface Unit {
|
|
6565
|
+
/**
|
|
6566
|
+
* Fetches one MCP server listing page from claudemarketplaces.com — `url` is the listing's
|
|
6567
|
+
* full URL or path, e.g. "https://claudemarketplaces.com/mcp/metroxe/bowmark" or
|
|
6568
|
+
* "/mcp/github/github-mcp-server". Returns the listing's structured fields straight off the
|
|
6569
|
+
* page's own schema.org `SoftwareApplication` record: `name`, `description`,
|
|
6570
|
+
* `applicationCategory`, `operatingSystem`, `codeRepository`, `featureList` (the tool/feature
|
|
6571
|
+
* names the listing declares), and `price`/`priceCurrency`. `publisher`, `kind` and `slug` are
|
|
6572
|
+
* read off the URL path. Only `mcp`-kind listings (`/mcp/<publisher>/<slug>`) are implemented
|
|
6573
|
+
* — `getListing` throws `ClaudeMarketplacesInputError` for any other path shape.
|
|
6574
|
+
*/
|
|
6575
|
+
getListing(url: string): Promise<claudeMarketplacesListing>;
|
|
6576
|
+
}
|
|
6577
|
+
}
|
|
6578
|
+
|
|
6454
6579
|
declare namespace BowmarkProvider_cleanairlawncare {
|
|
6455
6580
|
// ── Clean Air Lawn Care — the unit's own declarations, verbatim ──
|
|
6456
6581
|
interface CleanAirEstimateAvailability {
|
|
@@ -6901,6 +7026,41 @@ interface CultureFlyCheckoutLink {
|
|
|
6901
7026
|
}
|
|
6902
7027
|
}
|
|
6903
7028
|
|
|
7029
|
+
declare namespace BowmarkProvider_curiocity {
|
|
7030
|
+
// ── Curiocity — the unit's own declarations, verbatim ──
|
|
7031
|
+
interface CuriocityEvent {
|
|
7032
|
+
title: string; // "Slayyyter – WOR$T GIRL IN THE WORLD TOUR"
|
|
7033
|
+
url: string; // click-through — the event's own link, or the article's
|
|
7034
|
+
when: string | null; // "Thursday, Sept. 3, 2026" — free text, as curiocity writes it
|
|
7035
|
+
time: string | null; // "7 p.m."
|
|
7036
|
+
where: string | null; // "868 Granville St."
|
|
7037
|
+
cost: string | null; // "$650+"
|
|
7038
|
+
articleTitle: string; // the roundup (or single-event) post this came from
|
|
7039
|
+
articleUrl: string;
|
|
7040
|
+
publishedAt: string | null; // the article's own pubDate
|
|
7041
|
+
}
|
|
7042
|
+
|
|
7043
|
+
interface CuriocityListEventsQuery {
|
|
7044
|
+
city: string; // curiocity's own city slug, e.g. "vancouver", "toronto"
|
|
7045
|
+
}
|
|
7046
|
+
|
|
7047
|
+
/**
|
|
7048
|
+
* Curiocity's own city 'things to do' feeds, parsed into individual events — title, when,
|
|
7049
|
+
* time, where, cost and a click-through link — instead of the raw RSS/HTML a caller would
|
|
7050
|
+
* otherwise have to regex apart.
|
|
7051
|
+
*/
|
|
7052
|
+
interface Unit {
|
|
7053
|
+
/**
|
|
7054
|
+
* Reads curiocity.com's own 'things to do' feed for one city and returns individual events —
|
|
7055
|
+
* title, when, time, where, cost and a click-through link — parsed out of the site's roundup
|
|
7056
|
+
* posts instead of the raw RSS. `city` is curiocity's own slug (e.g. "vancouver", "toronto").
|
|
7057
|
+
* An empty array is the feed's own answer for a city curiocity does not cover, never invented
|
|
7058
|
+
* here — a block page or a moved endpoint THROWS instead.
|
|
7059
|
+
*/
|
|
7060
|
+
listEvents(query: CuriocityListEventsQuery): Promise<CuriocityEvent[]>;
|
|
7061
|
+
}
|
|
7062
|
+
}
|
|
7063
|
+
|
|
6904
7064
|
declare namespace BowmarkProvider_cyberpowerpc {
|
|
6905
7065
|
// ── CyberPowerPC — the unit's own declarations, verbatim ──
|
|
6906
7066
|
interface CyberpowerpcConfigurator {
|
|
@@ -8087,6 +8247,34 @@ interface ErieAgent {
|
|
|
8087
8247
|
}
|
|
8088
8248
|
}
|
|
8089
8249
|
|
|
8250
|
+
declare namespace BowmarkProvider_etsy {
|
|
8251
|
+
// ── Etsy — the unit's own declarations, verbatim ──
|
|
8252
|
+
interface etsyListing {
|
|
8253
|
+
listingId: number;
|
|
8254
|
+
title: string;
|
|
8255
|
+
price: number | null;
|
|
8256
|
+
currencyCode: string | null;
|
|
8257
|
+
quantity: number | null;
|
|
8258
|
+
tags: string[];
|
|
8259
|
+
url: string;
|
|
8260
|
+
}
|
|
8261
|
+
|
|
8262
|
+
/**
|
|
8263
|
+
* Etsy's own documented Open API v3 (openapi.etsy.com) — searches active listings on etsy.com
|
|
8264
|
+
* by keyword and returns id, title, price, currency, quantity, tags and the listing's own
|
|
8265
|
+
* etsy.com URL, without scraping etsy.com's search page (which sits behind DataDome).
|
|
8266
|
+
*/
|
|
8267
|
+
interface Unit {
|
|
8268
|
+
/**
|
|
8269
|
+
* Searches Etsy's live catalog of active listings by keyword, via Etsy's documented Open API
|
|
8270
|
+
* v3, and returns the matching listings — id, title, price, currency, quantity available, tags
|
|
8271
|
+
* and the listing's own etsy.com URL. `limit` caps the row count (default 10, Etsy's own
|
|
8272
|
+
* ceiling 100). Requires an Etsy developer API key — see this provider's `auth`.
|
|
8273
|
+
*/
|
|
8274
|
+
search(args: string | { query: string; limit?: number }): Promise<etsyListing[]>;
|
|
8275
|
+
}
|
|
8276
|
+
}
|
|
8277
|
+
|
|
8090
8278
|
declare namespace BowmarkProvider_eventsource {
|
|
8091
8279
|
// ── Event Source — the unit's own declarations, verbatim ──
|
|
8092
8280
|
interface EventSourceDesign {
|
|
@@ -11713,6 +11901,69 @@ interface HobieLocalAvailability {
|
|
|
11713
11901
|
}
|
|
11714
11902
|
}
|
|
11715
11903
|
|
|
11904
|
+
declare namespace BowmarkProvider_hodjapasha {
|
|
11905
|
+
// ── Hodjapasha Culture Center — Istanbul whirling-dervish and dance show ticketing — the unit's own declarations, verbatim ──
|
|
11906
|
+
interface HodjapashaListingEntry {
|
|
11907
|
+
productId: string;
|
|
11908
|
+
title: string;
|
|
11909
|
+
summary: string | null;
|
|
11910
|
+
duration: string | null;
|
|
11911
|
+
priceFrom: string | null; // the site's own "from" price, e.g. "$42.22"
|
|
11912
|
+
currency: string | null;
|
|
11913
|
+
url: string;
|
|
11914
|
+
}
|
|
11915
|
+
interface HodjapashaShowDetail {
|
|
11916
|
+
productId: string;
|
|
11917
|
+
title: string;
|
|
11918
|
+
description: string | null; // the site's own description paragraphs, joined
|
|
11919
|
+
duration: string | null;
|
|
11920
|
+
location: string | null;
|
|
11921
|
+
productCode: string | null;
|
|
11922
|
+
priceFrom: string | null;
|
|
11923
|
+
currency: string | null;
|
|
11924
|
+
url: string;
|
|
11925
|
+
}
|
|
11926
|
+
interface HodjapashaSession {
|
|
11927
|
+
sessionId: string;
|
|
11928
|
+
label: string; // e.g. "20:30 - Available"
|
|
11929
|
+
}
|
|
11930
|
+
interface HodjapashaAvailability {
|
|
11931
|
+
productId: string;
|
|
11932
|
+
date: string; // YYYY-MM-DD, as queried
|
|
11933
|
+
available: boolean;
|
|
11934
|
+
sessions: HodjapashaSession[];
|
|
11935
|
+
totalPrice: string | null; // e.g. "1900"
|
|
11936
|
+
currency: string | null;
|
|
11937
|
+
}
|
|
11938
|
+
|
|
11939
|
+
/**
|
|
11940
|
+
* The Hodjapasha Culture Center's own Rezdy booking widget for its whirling-dervish (Sema) and
|
|
11941
|
+
* Ottoman/folk dance shows in Istanbul — show list, per-show pricing and description, and
|
|
11942
|
+
* date/party-size availability with session times and total price, read straight off the
|
|
11943
|
+
* widget's own pages.
|
|
11944
|
+
*/
|
|
11945
|
+
interface Unit {
|
|
11946
|
+
/**
|
|
11947
|
+
* Reads every show hodjapasha.com's own booking widget lists off /widget/index.php — title,
|
|
11948
|
+
* productId, from-price, duration.
|
|
11949
|
+
*/
|
|
11950
|
+
listShows(): Promise<HodjapashaListingEntry[]>;
|
|
11951
|
+
|
|
11952
|
+
/**
|
|
11953
|
+
* Reads one show's full description, adult/child pricing, location and duration off its own
|
|
11954
|
+
* /widget/product-detail.php page.
|
|
11955
|
+
*/
|
|
11956
|
+
getShow(productId: string): Promise<HodjapashaShowDetail>;
|
|
11957
|
+
|
|
11958
|
+
/**
|
|
11959
|
+
* Checks the widget's own availability endpoint for a show, YYYY-MM-DD date and party size
|
|
11960
|
+
* (defaults: 1 adult, 0 children), returning the session time(s) offered and the total price,
|
|
11961
|
+
* or `available: false` for a date the show does not run.
|
|
11962
|
+
*/
|
|
11963
|
+
getAvailability(productId: string, date: string, opts?: { adults?: number; children?: number }): Promise<HodjapashaAvailability>;
|
|
11964
|
+
}
|
|
11965
|
+
}
|
|
11966
|
+
|
|
11716
11967
|
declare namespace BowmarkProvider_holidaybuilders {
|
|
11717
11968
|
// ── Holiday Builders — the unit's own declarations, verbatim ──
|
|
11718
11969
|
// Holiday Builders' OWN shapes — not a capability contract.
|
|
@@ -16492,6 +16743,58 @@ interface StoreShelfRoster {
|
|
|
16492
16743
|
}
|
|
16493
16744
|
}
|
|
16494
16745
|
|
|
16746
|
+
declare namespace BowmarkProvider_millisaraylar {
|
|
16747
|
+
// ── millisaraylar.gov.tr — Türkiye Presidential Administration of National Palaces — the unit's own declarations, verbatim ──
|
|
16748
|
+
interface MillisaraylarPalace {
|
|
16749
|
+
id: string;
|
|
16750
|
+
name: string;
|
|
16751
|
+
url: string;
|
|
16752
|
+
}
|
|
16753
|
+
interface MillisaraylarVisitingHours {
|
|
16754
|
+
name: string;
|
|
16755
|
+
closedDays: string | null; // the site's own text, e.g. "Tuesday"
|
|
16756
|
+
ticketOfficeOpeningTime: string | null; // "HH:MM"
|
|
16757
|
+
ticketOfficeClosingTime: string | null; // "HH:MM"
|
|
16758
|
+
url: string;
|
|
16759
|
+
}
|
|
16760
|
+
interface MillisaraylarTicketPrices {
|
|
16761
|
+
name: string;
|
|
16762
|
+
currency: "TRY";
|
|
16763
|
+
domestic: number | null;
|
|
16764
|
+
domesticStudent: number | null;
|
|
16765
|
+
foreign: number | null;
|
|
16766
|
+
url: string;
|
|
16767
|
+
}
|
|
16768
|
+
|
|
16769
|
+
/**
|
|
16770
|
+
* Türkiye's Presidential Administration of National Palaces — the palace/kiosk/pavilion list,
|
|
16771
|
+
* closed days and ticket-office hours, and domestic/domestic-student/foreign ticket prices for
|
|
16772
|
+
* Topkapi Palace, Dolmabahçe Palace, Yıldız Palace, Beylerbeyi Palace and the other sites it
|
|
16773
|
+
* administers, read straight off the site's own ticket-purchase and detail pages.
|
|
16774
|
+
*/
|
|
16775
|
+
interface Unit {
|
|
16776
|
+
/**
|
|
16777
|
+
* Reads the full palace/kiosk/pavilion/museum/factory list off millisaraylar.gov.tr's own site
|
|
16778
|
+
* navigation.
|
|
16779
|
+
*/
|
|
16780
|
+
getPalaces(): Promise<MillisaraylarPalace[]>;
|
|
16781
|
+
|
|
16782
|
+
/**
|
|
16783
|
+
* Matches `query` against `getPalaces()`'s own listing (a substring match on the site's own
|
|
16784
|
+
* display name, e.g. "Topkapi" or "Dolmabahce") and reads that site's closed day(s) and
|
|
16785
|
+
* ticket-office opening/closing hours off its detail page.
|
|
16786
|
+
*/
|
|
16787
|
+
getVisitingHours(query: string): Promise<MillisaraylarVisitingHours>;
|
|
16788
|
+
|
|
16789
|
+
/**
|
|
16790
|
+
* Matches `query` against millisaraylar.gov.tr's own ticket-purchase location list (a narrower
|
|
16791
|
+
* set than `getPalaces` — only what is sold as a standalone ticket) and reads the domestic,
|
|
16792
|
+
* domestic-student and foreign prices (TRY) the site itself quotes.
|
|
16793
|
+
*/
|
|
16794
|
+
getTicketPrices(query: string): Promise<MillisaraylarTicketPrices>;
|
|
16795
|
+
}
|
|
16796
|
+
}
|
|
16797
|
+
|
|
16495
16798
|
declare namespace BowmarkProvider_minimax {
|
|
16496
16799
|
// ── MiniMax — the unit's own declarations, verbatim ──
|
|
16497
16800
|
interface MinimaxDocIndexEntry {
|
|
@@ -21263,6 +21566,62 @@ interface ScPlaylist {
|
|
|
21263
21566
|
}
|
|
21264
21567
|
}
|
|
21265
21568
|
|
|
21569
|
+
declare namespace BowmarkProvider_spirithalloween {
|
|
21570
|
+
// ── Spirit Halloween — the unit's own declarations, verbatim ──
|
|
21571
|
+
interface SpiritHalloweenSearchResult {
|
|
21572
|
+
productId: string
|
|
21573
|
+
sku: string
|
|
21574
|
+
name: string
|
|
21575
|
+
url: string
|
|
21576
|
+
image: string | null
|
|
21577
|
+
price: number | null
|
|
21578
|
+
currency: "USD"
|
|
21579
|
+
listedSize: string | null // the ONE size this listing row is indexed under
|
|
21580
|
+
listedSizeStock: number | null // that size's stock only — not the full range
|
|
21581
|
+
}
|
|
21582
|
+
interface SpiritHalloweenSearchResults {
|
|
21583
|
+
query: string
|
|
21584
|
+
category: string
|
|
21585
|
+
results: SpiritHalloweenSearchResult[]
|
|
21586
|
+
totalMatches: number | null
|
|
21587
|
+
}
|
|
21588
|
+
interface SpiritHalloweenSizeVariant {
|
|
21589
|
+
color: string
|
|
21590
|
+
size: string // the site's own size label, e.g. "CHILD MEDIUM"
|
|
21591
|
+
price: number
|
|
21592
|
+
inStock: boolean
|
|
21593
|
+
shipStockQuantity: number
|
|
21594
|
+
variantId: string
|
|
21595
|
+
}
|
|
21596
|
+
interface SpiritHalloweenProduct {
|
|
21597
|
+
productId: string
|
|
21598
|
+
name: string
|
|
21599
|
+
url: string
|
|
21600
|
+
sizes: SpiritHalloweenSizeVariant[] // every real color/size combination, each with its own live stock
|
|
21601
|
+
}
|
|
21602
|
+
|
|
21603
|
+
/**
|
|
21604
|
+
* The licensed Halloween costume specialist — category browse and per-size, per-color live
|
|
21605
|
+
* stock for the lines it carries (today: KPop Demon Hunters).
|
|
21606
|
+
*/
|
|
21607
|
+
interface Unit {
|
|
21608
|
+
/**
|
|
21609
|
+
* Browses Spirit Halloween's category listing for a query resolved against a small internal
|
|
21610
|
+
* directory of mapped categories (today: "KPop Demon Hunters" and its characters — rumi, mira,
|
|
21611
|
+
* zoey, saja) — NOT a general free-text site search, which was probed 2026-09-01 and does not
|
|
21612
|
+
* render results server-side. Each result row carries only its OWN listed size's stock; call
|
|
21613
|
+
* getProduct for the full per-size breakdown.
|
|
21614
|
+
*/
|
|
21615
|
+
search(args: { query: string; limit?: number }): Promise<SpiritHalloweenSearchResults>;
|
|
21616
|
+
|
|
21617
|
+
/**
|
|
21618
|
+
* Reads one product page's full live size/color matrix — every real variant this product sells
|
|
21619
|
+
* in, each with its own price and in-stock signal — for a product URL returned by search.
|
|
21620
|
+
*/
|
|
21621
|
+
getProduct(args: { url: string }): Promise<SpiritHalloweenProduct>;
|
|
21622
|
+
}
|
|
21623
|
+
}
|
|
21624
|
+
|
|
21266
21625
|
declare namespace BowmarkProvider_starlighthomes {
|
|
21267
21626
|
// ── Starlight Homes — the unit's own declarations, verbatim ──
|
|
21268
21627
|
// Starlight Homes' OWN shapes — not a capability contract.
|
|
@@ -22296,7 +22655,7 @@ interface TherabodyRecommendation {
|
|
|
22296
22655
|
|
|
22297
22656
|
/**
|
|
22298
22657
|
* Filters the live catalogue by what a shopper actually needs — device family, audience, and
|
|
22299
|
-
* the features named (
|
|
22658
|
+
* the features named (percussive, recovery, massage, vibration). Returns the matching products
|
|
22300
22659
|
* with their real prices, ranked by in-stock first. The storefront does not publish a query or
|
|
22301
22660
|
* filter endpoint, so the function is local filtering on the catalogue listTheragunProducts
|
|
22302
22661
|
* already returns — the divide is what the function does with the data, not how it gets there.
|
|
@@ -24486,6 +24845,36 @@ interface XpressWaitTime {
|
|
|
24486
24845
|
}
|
|
24487
24846
|
}
|
|
24488
24847
|
|
|
24848
|
+
declare namespace BowmarkProvider_yelp {
|
|
24849
|
+
// ── Yelp — the unit's own declarations, verbatim ──
|
|
24850
|
+
interface YelpSearchArgs {
|
|
24851
|
+
term: string; // e.g. "ramen" — Yelp's own find_desc
|
|
24852
|
+
location: string; // e.g. "Philadelphia, PA" — Yelp's own find_loc
|
|
24853
|
+
limit?: number; // default 10, clamped to [1, 30]
|
|
24854
|
+
}
|
|
24855
|
+
|
|
24856
|
+
interface YelpSearchResult {
|
|
24857
|
+
name: string;
|
|
24858
|
+
url: string;
|
|
24859
|
+
rating: number | null;
|
|
24860
|
+
reviewCount: number | null;
|
|
24861
|
+
priceRange: string | null; // "$".."$$$$", or null
|
|
24862
|
+
neighborhood: string | null;
|
|
24863
|
+
}
|
|
24864
|
+
|
|
24865
|
+
/**
|
|
24866
|
+
* Yelp's own business search — returns real, currently-listed businesses for a search term and
|
|
24867
|
+
* location with Yelp's own star rating, review count, price tier and neighborhood.
|
|
24868
|
+
*/
|
|
24869
|
+
interface Unit {
|
|
24870
|
+
/**
|
|
24871
|
+
* Runs Yelp's own business search for a term and location and returns real, currently-listed
|
|
24872
|
+
* businesses with Yelp's own rating, review count, price tier and neighborhood. Read-only.
|
|
24873
|
+
*/
|
|
24874
|
+
search(args: YelpSearchArgs): Promise<YelpSearchResult[]>;
|
|
24875
|
+
}
|
|
24876
|
+
}
|
|
24877
|
+
|
|
24489
24878
|
declare namespace BowmarkProvider_yorkwallcoverings {
|
|
24490
24879
|
// ── York Wallcoverings — the unit's own declarations, verbatim ──
|
|
24491
24880
|
interface YorkWallcoveringsSearchResult {
|
|
@@ -25513,6 +25902,7 @@ interface BowmarkProviders {
|
|
|
25513
25902
|
avis: BowmarkProvider_avis.Unit;
|
|
25514
25903
|
azazie: BowmarkProvider_azazie.Unit;
|
|
25515
25904
|
azure: BowmarkProvider_azure.Unit;
|
|
25905
|
+
bankmycell: BowmarkProvider_bankmycell.Unit;
|
|
25516
25906
|
barletta: BowmarkProvider_barletta.Unit;
|
|
25517
25907
|
baublebar: BowmarkProvider_baublebar.Unit;
|
|
25518
25908
|
bcparkscamping: BowmarkProvider_bcparkscamping.Unit;
|
|
@@ -25547,6 +25937,7 @@ interface BowmarkProviders {
|
|
|
25547
25937
|
chriscraft: BowmarkProvider_chriscraft.Unit;
|
|
25548
25938
|
classichome: BowmarkProvider_classichome.Unit;
|
|
25549
25939
|
classpass: BowmarkProvider_classpass.Unit;
|
|
25940
|
+
claudemarketplaces_com: BowmarkProvider_claudemarketplaces_com.Unit;
|
|
25550
25941
|
cleanairlawncare: BowmarkProvider_cleanairlawncare.Unit;
|
|
25551
25942
|
cloudflare: BowmarkProvider_cloudflare.Unit;
|
|
25552
25943
|
clubchampion: BowmarkProvider_clubchampion.Unit;
|
|
@@ -25554,6 +25945,7 @@ interface BowmarkProviders {
|
|
|
25554
25945
|
couponfollow: BowmarkProvider_couponfollow.Unit;
|
|
25555
25946
|
cruiselakegeneva: BowmarkProvider_cruiselakegeneva.Unit;
|
|
25556
25947
|
culturefly: BowmarkProvider_culturefly.Unit;
|
|
25948
|
+
curiocity: BowmarkProvider_curiocity.Unit;
|
|
25557
25949
|
cyberpowerpc: BowmarkProvider_cyberpowerpc.Unit;
|
|
25558
25950
|
davidsonhomes: BowmarkProvider_davidsonhomes.Unit;
|
|
25559
25951
|
deangroup: BowmarkProvider_deangroup.Unit;
|
|
@@ -25570,6 +25962,7 @@ interface BowmarkProviders {
|
|
|
25570
25962
|
embroker: BowmarkProvider_embroker.Unit;
|
|
25571
25963
|
eq3: BowmarkProvider_eq3.Unit;
|
|
25572
25964
|
erieinsurance: BowmarkProvider_erieinsurance.Unit;
|
|
25965
|
+
etsy: BowmarkProvider_etsy.Unit;
|
|
25573
25966
|
eventsource: BowmarkProvider_eventsource.Unit;
|
|
25574
25967
|
evolutionofsmooth: BowmarkProvider_evolutionofsmooth.Unit;
|
|
25575
25968
|
executivehomecare: BowmarkProvider_executivehomecare.Unit;
|
|
@@ -25607,6 +26000,7 @@ interface BowmarkProviders {
|
|
|
25607
26000
|
hilton: BowmarkProvider_hilton.Unit;
|
|
25608
26001
|
historymaker: BowmarkProvider_historymaker.Unit;
|
|
25609
26002
|
hobie: BowmarkProvider_hobie.Unit;
|
|
26003
|
+
hodjapasha: BowmarkProvider_hodjapasha.Unit;
|
|
25610
26004
|
holidaybuilders: BowmarkProvider_holidaybuilders.Unit;
|
|
25611
26005
|
hunter: BowmarkProvider_hunter.Unit;
|
|
25612
26006
|
ibuypower: BowmarkProvider_ibuypower.Unit;
|
|
@@ -25653,6 +26047,7 @@ interface BowmarkProviders {
|
|
|
25653
26047
|
medicare: BowmarkProvider_medicare.Unit;
|
|
25654
26048
|
mergify: BowmarkProvider_mergify.Unit;
|
|
25655
26049
|
microcenter: BowmarkProvider_microcenter.Unit;
|
|
26050
|
+
millisaraylar: BowmarkProvider_millisaraylar.Unit;
|
|
25656
26051
|
minimax: BowmarkProvider_minimax.Unit;
|
|
25657
26052
|
minted: BowmarkProvider_minted.Unit;
|
|
25658
26053
|
mixbook: BowmarkProvider_mixbook.Unit;
|
|
@@ -25712,6 +26107,7 @@ interface BowmarkProviders {
|
|
|
25712
26107
|
smithery: BowmarkProvider_smithery.Unit;
|
|
25713
26108
|
solostove: BowmarkProvider_solostove.Unit;
|
|
25714
26109
|
soundcloud: BowmarkProvider_soundcloud.Unit;
|
|
26110
|
+
spirithalloween: BowmarkProvider_spirithalloween.Unit;
|
|
25715
26111
|
starlighthomes: BowmarkProvider_starlighthomes.Unit;
|
|
25716
26112
|
statefarm: BowmarkProvider_statefarm.Unit;
|
|
25717
26113
|
stickergiant: BowmarkProvider_stickergiant.Unit;
|
|
@@ -25752,6 +26148,7 @@ interface BowmarkProviders {
|
|
|
25752
26148
|
wellfound: BowmarkProvider_wellfound.Unit;
|
|
25753
26149
|
winestyles: BowmarkProvider_winestyles.Unit;
|
|
25754
26150
|
xpresswellnessurgentcare: BowmarkProvider_xpresswellnessurgentcare.Unit;
|
|
26151
|
+
yelp: BowmarkProvider_yelp.Unit;
|
|
25755
26152
|
yorkwallcoverings: BowmarkProvider_yorkwallcoverings.Unit;
|
|
25756
26153
|
yourarborhome: BowmarkProvider_yourarborhome.Unit;
|
|
25757
26154
|
youtube: BowmarkProvider_youtube.Unit;
|
|
@@ -77482,6 +77879,7 @@ interface BowmarkLibrary {
|
|
|
77482
77879
|
bundles: BowmarkCapability_bundles.Unit;
|
|
77483
77880
|
cable_railing_quote: BowmarkCapability_cable_railing_quote.Unit;
|
|
77484
77881
|
cars: BowmarkCapability_cars.Unit;
|
|
77882
|
+
costume_size_check: BowmarkCapability_costume_size_check.Unit;
|
|
77485
77883
|
coworking: BowmarkCapability_coworking.Unit;
|
|
77486
77884
|
custom_sofa_configurator: BowmarkCapability_custom_sofa_configurator.Unit;
|
|
77487
77885
|
delivery: BowmarkCapability_delivery.Unit;
|