@aglyn/plugins-ai 1.0.0-beta.285 → 1.0.0-beta.288

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.
Files changed (228) hide show
  1. package/package.json +17 -17
  2. package/src/lib/assets/site-styles/nonprofit.webp +0 -0
  3. package/src/lib/assets/site-styles/professional.webp +0 -0
  4. package/src/lib/assets/site-styles/store.webp +0 -0
  5. package/src/lib/assets/site-styles/trades.webp +0 -0
  6. package/src/lib/components/ai-theme-proposal-card.component.js +12 -3
  7. package/src/lib/components/ai-theme-proposal-card.component.js.map +1 -1
  8. package/src/lib/declarations.js +5 -2
  9. package/src/lib/declarations.js.map +1 -1
  10. package/src/lib/declarations.server.js +12 -0
  11. package/src/lib/declarations.server.js.map +1 -1
  12. package/src/lib/jobs/ai-build-capabilities.d.ts +3 -1
  13. package/src/lib/jobs/ai-build-capabilities.js +27 -2
  14. package/src/lib/jobs/ai-build-capabilities.js.map +1 -1
  15. package/src/lib/jobs/ai-business-profile-prefill.js +6 -3
  16. package/src/lib/jobs/ai-business-profile-prefill.js.map +1 -1
  17. package/src/lib/jobs/ai-image-reads.d.ts +59 -0
  18. package/src/lib/jobs/ai-image-reads.js +138 -0
  19. package/src/lib/jobs/ai-image-reads.js.map +1 -0
  20. package/src/lib/jobs/ai-job-build-step.d.ts +29 -0
  21. package/src/lib/jobs/ai-job-build-step.js +83 -12
  22. package/src/lib/jobs/ai-job-build-step.js.map +1 -1
  23. package/src/lib/jobs/ai-job-duplicate-step.d.ts +2 -1
  24. package/src/lib/jobs/ai-job-duplicate-step.js +6 -6
  25. package/src/lib/jobs/ai-job-duplicate-step.js.map +1 -1
  26. package/src/lib/jobs/ai-job-import-step.d.ts +4 -2
  27. package/src/lib/jobs/ai-job-import-step.js +15 -11
  28. package/src/lib/jobs/ai-job-import-step.js.map +1 -1
  29. package/src/lib/jobs/ai-job-insight-step.d.ts +10 -0
  30. package/src/lib/jobs/ai-job-insight-step.js +23 -5
  31. package/src/lib/jobs/ai-job-insight-step.js.map +1 -1
  32. package/src/lib/jobs/ai-job-layout-language.js +2 -1
  33. package/src/lib/jobs/ai-job-layout-language.js.map +1 -1
  34. package/src/lib/jobs/ai-job-media-step.d.ts +2 -1
  35. package/src/lib/jobs/ai-job-media-step.js +6 -8
  36. package/src/lib/jobs/ai-job-media-step.js.map +1 -1
  37. package/src/lib/jobs/ai-job-navigation-step.d.ts +2 -1
  38. package/src/lib/jobs/ai-job-navigation-step.js +7 -9
  39. package/src/lib/jobs/ai-job-navigation-step.js.map +1 -1
  40. package/src/lib/jobs/ai-job-page-language.js +7 -1
  41. package/src/lib/jobs/ai-job-page-language.js.map +1 -1
  42. package/src/lib/jobs/ai-job-page-sections.js +16 -3
  43. package/src/lib/jobs/ai-job-page-sections.js.map +1 -1
  44. package/src/lib/jobs/ai-job-page-step.js +9 -1
  45. package/src/lib/jobs/ai-job-page-step.js.map +1 -1
  46. package/src/lib/jobs/ai-job-plan-step.d.ts +30 -8
  47. package/src/lib/jobs/ai-job-plan-step.js +78 -13
  48. package/src/lib/jobs/ai-job-plan-step.js.map +1 -1
  49. package/src/lib/jobs/ai-job-privacy-step.d.ts +4 -2
  50. package/src/lib/jobs/ai-job-privacy-step.js +14 -15
  51. package/src/lib/jobs/ai-job-privacy-step.js.map +1 -1
  52. package/src/lib/jobs/ai-job-products-step.js +5 -3
  53. package/src/lib/jobs/ai-job-products-step.js.map +1 -1
  54. package/src/lib/jobs/ai-job-settings-step.d.ts +2 -1
  55. package/src/lib/jobs/ai-job-settings-step.js +7 -8
  56. package/src/lib/jobs/ai-job-settings-step.js.map +1 -1
  57. package/src/lib/jobs/ai-job-site-content.d.ts +34 -1
  58. package/src/lib/jobs/ai-job-site-content.js +67 -8
  59. package/src/lib/jobs/ai-job-site-content.js.map +1 -1
  60. package/src/lib/jobs/ai-job-site-datasets.d.ts +53 -3
  61. package/src/lib/jobs/ai-job-site-datasets.js +300 -30
  62. package/src/lib/jobs/ai-job-site-datasets.js.map +1 -1
  63. package/src/lib/jobs/ai-job-site-step.js +6 -3
  64. package/src/lib/jobs/ai-job-site-step.js.map +1 -1
  65. package/src/lib/jobs/ai-job-site-store-pages.js +3 -3
  66. package/src/lib/jobs/ai-job-site-store-pages.js.map +1 -1
  67. package/src/lib/jobs/ai-job-text-step.js +2 -1
  68. package/src/lib/jobs/ai-job-text-step.js.map +1 -1
  69. package/src/lib/jobs/ai-job-tracking-step.d.ts +2 -1
  70. package/src/lib/jobs/ai-job-tracking-step.js +7 -8
  71. package/src/lib/jobs/ai-job-tracking-step.js.map +1 -1
  72. package/src/lib/jobs/ai-jobs-beat.d.ts +11 -7
  73. package/src/lib/jobs/ai-jobs-beat.js +18 -8
  74. package/src/lib/jobs/ai-jobs-beat.js.map +1 -1
  75. package/src/lib/jobs/ai-jobs-notify.d.ts +66 -1
  76. package/src/lib/jobs/ai-jobs-notify.js +136 -3
  77. package/src/lib/jobs/ai-jobs-notify.js.map +1 -1
  78. package/src/lib/jobs/ai-layout-stock-photos.d.ts +155 -7
  79. package/src/lib/jobs/ai-layout-stock-photos.js +1517 -220
  80. package/src/lib/jobs/ai-layout-stock-photos.js.map +1 -1
  81. package/src/lib/jobs/ai-product-image.d.ts +14 -0
  82. package/src/lib/jobs/ai-product-image.js +73 -21
  83. package/src/lib/jobs/ai-product-image.js.map +1 -1
  84. package/src/lib/jobs/ai-theme-brand-inputs.d.ts +9 -1
  85. package/src/lib/jobs/ai-theme-brand-inputs.js +28 -2
  86. package/src/lib/jobs/ai-theme-brand-inputs.js.map +1 -1
  87. package/src/lib/jobs/fixtures/ai-site-agl4065-datasets.d.ts +175 -0
  88. package/src/lib/jobs/fixtures/ai-site-agl4065-datasets.js +601 -0
  89. package/src/lib/jobs/fixtures/ai-site-agl4065-datasets.js.map +1 -0
  90. package/src/lib/jobs/fixtures/ai-site-agl4065-pages.d.ts +46 -0
  91. package/src/lib/jobs/fixtures/ai-site-agl4065-pages.js +2862 -0
  92. package/src/lib/jobs/fixtures/ai-site-agl4065-pages.js.map +1 -0
  93. package/src/lib/jobs/fixtures/ai-site-agl4065-plans.d.ts +74 -0
  94. package/src/lib/jobs/fixtures/ai-site-agl4065-plans.js +888 -0
  95. package/src/lib/jobs/fixtures/ai-site-agl4065-plans.js.map +1 -0
  96. package/src/lib/jobs/fixtures/ai-site-agl4092-datasets.d.ts +120 -0
  97. package/src/lib/jobs/fixtures/ai-site-agl4092-datasets.js +410 -0
  98. package/src/lib/jobs/fixtures/ai-site-agl4092-datasets.js.map +1 -0
  99. package/src/lib/jobs/fixtures/ai-stock-photo-agl4065-judge.d.ts +29 -0
  100. package/src/lib/jobs/fixtures/ai-stock-photo-agl4065-judge.js +81 -0
  101. package/src/lib/jobs/fixtures/ai-stock-photo-agl4065-judge.js.map +1 -0
  102. package/src/lib/jobs/fixtures/ai-stock-photo-agl4065-recordings.d.ts +87 -0
  103. package/src/lib/jobs/fixtures/ai-stock-photo-agl4065-recordings.js +225 -0
  104. package/src/lib/jobs/fixtures/ai-stock-photo-agl4065-recordings.js.map +1 -0
  105. package/src/lib/jobs/fixtures/ai-stock-photo-agl4092-recordings.d.ts +26 -0
  106. package/src/lib/jobs/fixtures/ai-stock-photo-agl4092-recordings.js +714 -0
  107. package/src/lib/jobs/fixtures/ai-stock-photo-agl4092-recordings.js.map +1 -0
  108. package/src/lib/layout-language/ai-layout-compiler.d.ts +11 -0
  109. package/src/lib/layout-language/ai-layout-compiler.js +194 -18
  110. package/src/lib/layout-language/ai-layout-compiler.js.map +1 -1
  111. package/src/lib/layout-language/ai-layout-copy.d.ts +37 -0
  112. package/src/lib/layout-language/ai-layout-copy.js +383 -3
  113. package/src/lib/layout-language/ai-layout-copy.js.map +1 -1
  114. package/src/lib/layout-language/ai-layout-design.d.ts +19 -0
  115. package/src/lib/layout-language/ai-layout-design.js +31 -11
  116. package/src/lib/layout-language/ai-layout-design.js.map +1 -1
  117. package/src/lib/layout-language/ai-layout-listings.d.ts +7 -1
  118. package/src/lib/layout-language/ai-layout-listings.js +9 -1
  119. package/src/lib/layout-language/ai-layout-listings.js.map +1 -1
  120. package/src/lib/layout-language/ai-layout-pictures.d.ts +39 -1
  121. package/src/lib/layout-language/ai-layout-pictures.js +141 -4
  122. package/src/lib/layout-language/ai-layout-pictures.js.map +1 -1
  123. package/src/lib/layout-language/ai-layout-storefront.d.ts +18 -4
  124. package/src/lib/layout-language/ai-layout-storefront.js +100 -20
  125. package/src/lib/layout-language/ai-layout-storefront.js.map +1 -1
  126. package/src/lib/model/ai-build-job.d.ts +7 -0
  127. package/src/lib/model/ai-build-job.js +36 -7
  128. package/src/lib/model/ai-build-job.js.map +1 -1
  129. package/src/lib/model/ai-build-plan.d.ts +28 -4
  130. package/src/lib/model/ai-build-plan.js +49 -9
  131. package/src/lib/model/ai-build-plan.js.map +1 -1
  132. package/src/lib/model/ai-build-progress.js +3 -1
  133. package/src/lib/model/ai-build-progress.js.map +1 -1
  134. package/src/lib/model/ai-job-notice.d.ts +8 -0
  135. package/src/lib/model/ai-job-notice.js +33 -0
  136. package/src/lib/model/ai-job-notice.js.map +1 -1
  137. package/src/lib/model/ai-job-plan-lines.d.ts +2 -1
  138. package/src/lib/model/ai-job-plan-lines.js +6 -1
  139. package/src/lib/model/ai-job-plan-lines.js.map +1 -1
  140. package/src/lib/model/ai-jobs.types.d.ts +8 -0
  141. package/src/lib/model/ai-jobs.types.js.map +1 -1
  142. package/src/lib/model/ai-permissions.d.ts +13 -0
  143. package/src/lib/model/ai-permissions.js +29 -1
  144. package/src/lib/model/ai-permissions.js.map +1 -1
  145. package/src/lib/model/ai-plan-said-sections.d.ts +12 -3
  146. package/src/lib/model/ai-plan-said-sections.js +22 -5
  147. package/src/lib/model/ai-plan-said-sections.js.map +1 -1
  148. package/src/lib/model/ai-products.d.ts +18 -0
  149. package/src/lib/model/ai-products.js +32 -0
  150. package/src/lib/model/ai-products.js.map +1 -1
  151. package/src/lib/model/ai-site-context.d.ts +6 -2
  152. package/src/lib/model/ai-site-context.js +8 -2
  153. package/src/lib/model/ai-site-context.js.map +1 -1
  154. package/src/lib/model/ai-site-inspiration.d.ts +3 -2
  155. package/src/lib/model/ai-site-inspiration.js +3 -2
  156. package/src/lib/model/ai-site-inspiration.js.map +1 -1
  157. package/src/lib/plugin.js +4 -13
  158. package/src/lib/plugin.js.map +1 -1
  159. package/src/lib/providers/anthropic.js +9 -2
  160. package/src/lib/providers/anthropic.js.map +1 -1
  161. package/src/lib/providers/catalog.js +14 -5
  162. package/src/lib/providers/catalog.js.map +1 -1
  163. package/src/lib/providers/contract.d.ts +24 -1
  164. package/src/lib/providers/contract.js.map +1 -1
  165. package/src/lib/providers/routing.js +5 -2
  166. package/src/lib/providers/routing.js.map +1 -1
  167. package/src/lib/runtime/ai-dataset-generation.d.ts +120 -1
  168. package/src/lib/runtime/ai-dataset-generation.js +352 -3
  169. package/src/lib/runtime/ai-dataset-generation.js.map +1 -1
  170. package/src/lib/runtime/ai-dev-replay.d.ts +1 -0
  171. package/src/lib/runtime/ai-dev-replay.js +4 -2
  172. package/src/lib/runtime/ai-dev-replay.js.map +1 -1
  173. package/src/lib/runtime/ai-doctrine-validators.d.ts +47 -3
  174. package/src/lib/runtime/ai-doctrine-validators.js +345 -28
  175. package/src/lib/runtime/ai-doctrine-validators.js.map +1 -1
  176. package/src/lib/runtime/ai-doctrine.d.ts +5 -4
  177. package/src/lib/runtime/ai-doctrine.js +10 -3
  178. package/src/lib/runtime/ai-doctrine.js.map +1 -1
  179. package/src/lib/runtime/ai-icon-library.d.ts +27 -1
  180. package/src/lib/runtime/ai-icon-library.js +30 -3
  181. package/src/lib/runtime/ai-icon-library.js.map +1 -1
  182. package/src/lib/runtime/ai-products-generation.d.ts +11 -1
  183. package/src/lib/runtime/ai-products-generation.js +51 -4
  184. package/src/lib/runtime/ai-products-generation.js.map +1 -1
  185. package/src/lib/runtime/assist-answer-cache.d.ts +2 -0
  186. package/src/lib/runtime/assist-answer-cache.js +5 -2
  187. package/src/lib/runtime/assist-answer-cache.js.map +1 -1
  188. package/src/lib/server/ai-allotments.js +7 -2
  189. package/src/lib/server/ai-allotments.js.map +1 -1
  190. package/src/lib/server/ai-experiment-versions.js +5 -5
  191. package/src/lib/server/ai-experiment-versions.js.map +1 -1
  192. package/src/lib/server/ai-host-permissions-roster.d.ts +25 -0
  193. package/src/lib/server/ai-host-permissions-roster.js +33 -0
  194. package/src/lib/server/ai-host-permissions-roster.js.map +1 -0
  195. package/src/lib/server/ai-host-permissions.js +8 -6
  196. package/src/lib/server/ai-host-permissions.js.map +1 -1
  197. package/src/lib/server/ai-image-reads-route.d.ts +17 -0
  198. package/src/lib/server/ai-image-reads-route.js +106 -0
  199. package/src/lib/server/ai-image-reads-route.js.map +1 -0
  200. package/src/lib/server/ai-seo-apply.js +5 -5
  201. package/src/lib/server/ai-seo-apply.js.map +1 -1
  202. package/src/lib/server/ai-site-import-route.js +7 -4
  203. package/src/lib/server/ai-site-import-route.js.map +1 -1
  204. package/src/lib/server/assist-build.d.ts +15 -1
  205. package/src/lib/server/assist-build.js +30 -3
  206. package/src/lib/server/assist-build.js.map +1 -1
  207. package/src/lib/server/assist-chat.d.ts +11 -7
  208. package/src/lib/server/assist-chat.js +185 -48
  209. package/src/lib/server/assist-chat.js.map +1 -1
  210. package/src/lib/server/assist-docs-query.d.ts +51 -0
  211. package/src/lib/server/assist-docs-query.js +57 -0
  212. package/src/lib/server/assist-docs-query.js.map +1 -0
  213. package/src/lib/server/assist-jobs-context.d.ts +102 -0
  214. package/src/lib/server/assist-jobs-context.js +227 -0
  215. package/src/lib/server/assist-jobs-context.js.map +1 -0
  216. package/src/lib/server/assist-view-context.d.ts +8 -4
  217. package/src/lib/server/assist-view-context.js +12 -7
  218. package/src/lib/server/assist-view-context.js.map +1 -1
  219. package/src/lib/server.js +12 -0
  220. package/src/lib/server.js.map +1 -1
  221. package/src/lib/tools/ai-dataset-tool.d.ts +11 -1
  222. package/src/lib/tools/ai-dataset-tool.js +24 -7
  223. package/src/lib/tools/ai-dataset-tool.js.map +1 -1
  224. package/src/lib/tools/ai-duplicate-resource-tool.js +5 -6
  225. package/src/lib/tools/ai-duplicate-resource-tool.js.map +1 -1
  226. package/src/lib/components/ai-collaborator-permissions-column.component.d.ts +0 -32
  227. package/src/lib/components/ai-collaborator-permissions-column.component.js +0 -132
  228. package/src/lib/components/ai-collaborator-permissions-column.component.js.map +0 -1
@@ -138,6 +138,36 @@ import type { AiBuildPlan } from '../model/ai-build-plan';
138
138
  * where this module lists it ("gym" of "Synchronicity Gym"); and a
139
139
  * training word's other senses (a railway's train, an elevator's lift, a
140
140
  * newspaper's press, a boat's row) never fill a gym's picture.
141
+ * 10. **The trade, never a word of it** (the 2026-10-25 booth kit, AGL-4065:
142
+ * six trades whose photos were race cars, cyclists, horses, a Honda
143
+ * scooter, a canoe for "Parts for the ranch", hotel buffets for a taco
144
+ * trailer and an office for a landscaper). A business named by two
145
+ * things ("Motorcycle and dirt bike repair shop") is both; the craft
146
+ * named first leads, never one named only in what a customer may ask
147
+ * ("takes catering requests"); a hero's first tag and a broad search's
148
+ * hit name the business's own world ({@link AiStockSiteTerms.lead}),
149
+ * never any word of its type ("race" of "race car"); a two-word world
150
+ * ("dirt bike") is named whole; a maker's name never shows; a sentence to
151
+ * the reader, a job or an order is never a subject, and a part or gear is
152
+ * searched only with its world; a record's cover is searched in its world
153
+ * first; and a listed world widens only where the library knew nothing of
154
+ * it, never an outdoor or a trade world to an office.
155
+ * 11. **The thing, the place and the trade** (the 2026-10-28 live check,
156
+ * AGL-4092: a bare foot tagged "body part" for a parts shop's "Engine and
157
+ * air", a transmission chain for its "Brake Pad Set", a cat tagged "hungry"
158
+ * for a taco trailer's "Come hungry", a European alley for "Around town", a
159
+ * taco bowl salad for "Race day", and a man posing with a street bike tagged
160
+ * "susuki" in a motocross team's band of pictures). A picture of a thing is
161
+ * held to the business's own world, never any word of its type; a feeling,
162
+ * a time or a way of being somewhere is never a thing, and "around town" is
163
+ * the business's customers out there; a broad search's photo is OF the
164
+ * world among its first tags, never a "taco bowl"; an animal, a toy or a
165
+ * bare body part never leads a photo naming nothing of the world; a trade's
166
+ * things are held to the world it serves, never to "part"; a product takes
167
+ * a shoot no other product shows; a motocross business's world is
168
+ * off-road; and a maker is named one letter off ("susuki") and by its
169
+ * gear's and tires' names. Still by the tags: a mark only the pixels show
170
+ * is placed.
141
171
  *
142
172
  * A slot the library could not fill because it never answered — down, or
143
173
  * out of time before its first answer — or because the site's library
@@ -207,6 +237,9 @@ export declare function aiStockStem(word: string): string;
207
237
  * of an English noun phrase is at its end). "ceramic artist" from "a
208
238
  * portfolio for a ceramic artist who makes stoneware bowls"; "candle shop"
209
239
  * from "a small-batch candle shop selling hand-poured soy candles online".
240
+ * A business named by two things joined by "and" is its second noun phrase
241
+ * whole: "dirt bike repair shop" of "Motorcycle and dirt bike repair shop"
242
+ * (AGL-4065).
210
243
  */
211
244
  export declare function aiStockBusinessWords(businessType: string): string;
212
245
  /**
@@ -229,6 +262,28 @@ export interface AiStockSiteTerms {
229
262
  * held to it.
230
263
  */
231
264
  domain: string[];
265
+ /**
266
+ * The business's own world (AGL-4065): the listed crafts its own clause
267
+ * names, their names and kin, and its own words where no craft covers
268
+ * them, as stems and stem pairs ("dirt bike"). What a hero's first tag and a
269
+ * broad search's hit name. Its whole domain where no craft is listed.
270
+ */
271
+ lead?: string[];
272
+ /**
273
+ * The world a trade serves, as its type names it, where the craft is the
274
+ * trade ("dirt bike" for a parts shop's craft "part", AGL-4065): what its
275
+ * pictures are qualified by in place of the craft.
276
+ */
277
+ leadWord?: string;
278
+ /**
279
+ * What a trade's pictures of a thing must name, where the craft is the
280
+ * trade (AGL-4092): the names of the world it serves ("dirt bike",
281
+ * "motocross"), never its craft. A parts shop's "part" named a bare foot
282
+ * tagged "body part" and a transmission tagged "mechanical part".
283
+ */
284
+ held?: string[];
285
+ /** What a picture of the business out where it is asks for ({@link CRAFT_KIN}, AGL-4092). */
286
+ out?: string[];
232
287
  /** The searches for the site's world itself, broadest last. */
233
288
  broad: string[];
234
289
  /** The searches for its maker at work, for a story of the craft (AGL-3660); empty for a craft not listed. */
@@ -266,20 +321,39 @@ export interface AiStockSiteTerms {
266
321
  */
267
322
  work?: AiStockScene[];
268
323
  }
269
- /** The site's terms, read from its business type. */
324
+ /**
325
+ * The site's terms, read from its business type.
326
+ *
327
+ * Two worlds are read (AGL-4065). Its DOMAIN is everything its words name
328
+ * of its world, what a picture of a thing is held to. Its LEAD is the
329
+ * business's own world: the listed crafts its own clause names (and the
330
+ * craft's), their names and kin, and the clause's own words where no craft
331
+ * covers them, never a word that names a world only beside another ("race",
332
+ * "team") nor what a customer is asked to do. A hero's first tag and a broad
333
+ * search's hit name the lead: the Rut Runners heroes, held to every word of
334
+ * "Amateur motocross race team: rider profiles, race schedule…", took race
335
+ * cars because "race car" named "race". Of the crafts its words list, the one
336
+ * named first leads (a taco trailer that "takes catering requests" is a taco
337
+ * trailer), and a craft named only in what a customer may ask for gives the
338
+ * site no searches of its own.
339
+ */
270
340
  export declare function aiStockSiteTerms(businessType: string): AiStockSiteTerms;
271
341
  /**
272
342
  * A picture's subject in a few words (AGL-3660): the noun phrase its alt
273
343
  * text opens with — its first clause holding more than filler, cut where a
274
344
  * preposition starts the setting, filler dropped, its last three words (the
275
- * head noun is the last) — else its section's name.
345
+ * head noun is the last) — else its section's name. A word or two joined by
346
+ * "and" to a longer noun phrase only modify its head: the subject of "Potato
347
+ * and egg breakfast taco" is "egg breakfast taco", never "potato" (AGL-4065).
276
348
  */
277
349
  export declare function aiStockSubjectWords(alt: string, sectionName: string): string;
278
350
  /**
279
351
  * The thing a subject shows, one singular word: its last word that is not
280
352
  * a set or a wrapper of it — "bowl" from "nesting bowl set", "candle" from
281
353
  * "candle gift set", "vase" from "bud vase". Its last word when every word
282
- * is one ("gift set").
354
+ * is one ("gift set"). A feeling, a time or a way of being somewhere is
355
+ * never one ({@link NON_THINGS}, AGL-4092): "Come hungry" and "Around town"
356
+ * show no thing, and "Race day" is of the race.
283
357
  */
284
358
  export declare function aiStockObjectWord(subject: string): string;
285
359
  /** The frame's orientation: a wide frame wants a landscape photo, a tall one a portrait. */
@@ -309,6 +383,25 @@ export interface AiStockSearch extends StockPhotoSearchRequest {
309
383
  lead?: boolean;
310
384
  /** Whether the hit's first tags must name the site's world, where the object need not lead (AGL-3660). */
311
385
  leadWorld?: boolean;
386
+ /**
387
+ * Whether one of the hit's first tags must be OF the business's own world
388
+ * ({@link AiStockSiteTerms.lead}, AGL-4092): naming it, and ending in a word
389
+ * of it. "Taco bowl" is a bowl and "body part" a part: a taco trailer's
390
+ * "Race day" took a chicken salad tagged "taco bowl".
391
+ */
392
+ leadOwn?: boolean;
393
+ /**
394
+ * Stems of things a picture is never OF unless its words or the brief name
395
+ * them, refused among a hit's first tags where those name nothing of the
396
+ * business's own world ({@link aiStockOddLeads}, AGL-4092): a cat, a bare foot.
397
+ */
398
+ oddLeads?: readonly string[];
399
+ /**
400
+ * The world a trade serves, one of whose names every hit names, its kin or
401
+ * not ({@link AiStockSiteTerms.held}, AGL-4092): a dirt bike shop's "Brake
402
+ * Pad Set" is never a railway wagon's brake wheel tagged "brake".
403
+ */
404
+ served?: readonly string[];
312
405
  /**
313
406
  * Whether the hit's FIRST tag must name the site's world (AGL-3760): what
314
407
  * the photo is of, most of all. A hero is the site's opening picture; the
@@ -436,6 +529,10 @@ export interface AiStockProductFallback {
436
529
  broad?: readonly string[];
437
530
  /** The words a photo of the craft itself names ({@link AiStockSiteTerms.core}). */
438
531
  core?: readonly string[];
532
+ /** The world a trade serves, which its products name in place of the craft ({@link AiStockSiteTerms.held}, AGL-4092). */
533
+ held?: readonly string[];
534
+ /** The word a trade's product is searched with in place of its craft ({@link AiStockSiteTerms.leadWord}, AGL-4092). */
535
+ leadWord?: string;
439
536
  }
440
537
  /**
441
538
  * A product's searches (AGL-3676), most specific first: each of its subjects
@@ -490,7 +587,7 @@ export declare function aiStockProductSearches(slot: Pick<AiLayoutPictureSlot, '
490
587
  * asks first for the role its words or its list's name (`sectionName`) say,
491
588
  * in the site's world: "teacher classroom" for a "Math instructor" (AGL-3856).
492
589
  */
493
- export declare function aiStockSearchesFor(slot: Pick<AiLayoutPictureSlot, 'role' | 'alt' | 'aspect' | 'people' | 'record' | 'product'>, terms: Pick<AiStockSiteTerms, 'business' | 'craft' | 'domain' | 'broad'> & Partial<Pick<AiStockSiteTerms, 'making' | 'core' | 'scenes' | 'setting' | 'maker' | 'work'>>, subject: string, part?: AiStockSlotPart, sectionName?: string): AiStockSearch[];
590
+ export declare function aiStockSearchesFor(slot: Pick<AiLayoutPictureSlot, 'role' | 'alt' | 'aspect' | 'people' | 'record' | 'product'>, terms: Pick<AiStockSiteTerms, 'business' | 'craft' | 'domain' | 'broad'> & Partial<Pick<AiStockSiteTerms, 'making' | 'core' | 'scenes' | 'setting' | 'maker' | 'work' | 'leadWord' | 'held' | 'out'>>, subject: string, part?: AiStockSlotPart, sectionName?: string): AiStockSearch[];
494
591
  /**
495
592
  * Whether a picture of a craft's site whose pictures are people at a moment
496
593
  * shows that work wherever a page would show the maker (AGL-3942): an about
@@ -513,6 +610,12 @@ export interface AiStockJudgement {
513
610
  subject?: string;
514
611
  /** The site's domain stems ({@link AiStockSiteTerms.domain}). */
515
612
  domain?: readonly string[];
613
+ /**
614
+ * The business's own world ({@link AiStockSiteTerms.lead}, AGL-4065): what a
615
+ * hero's first tag and a hit of a search that is not of a thing name. The
616
+ * domain where absent.
617
+ */
618
+ world?: readonly string[];
516
619
  /**
517
620
  * Whether a hit must name the subject's object. A broad search, a hero
518
621
  * and an about picture need only name the domain.
@@ -530,6 +633,12 @@ export interface AiStockJudgement {
530
633
  lead?: boolean;
531
634
  /** Whether the hit's first tags must name the site's world ({@link AiStockSearch.leadWorld}). */
532
635
  leadWorld?: boolean;
636
+ /** Whether one of the hit's first tags must be OF the business's own world ({@link AiStockSearch.leadOwn}, AGL-4092). */
637
+ leadOwn?: boolean;
638
+ /** Stems no hit's first tags lead with while they name nothing of the business's own world ({@link AiStockSearch.oddLeads}, AGL-4092). */
639
+ oddLeads?: readonly string[];
640
+ /** The world a trade serves, which every hit names ({@link AiStockSearch.served}, AGL-4092). */
641
+ served?: readonly string[];
533
642
  /** Whether the hit's first tag must name the site's world ({@link AiStockSearch.first}). */
534
643
  first?: boolean;
535
644
  /** The stems of the site's business type or brief, which let a sensitive topic in ({@link AiStockSiteTerms.named}). */
@@ -562,6 +671,17 @@ export interface AiStockJudgement {
562
671
  /** Stems of the places the picture is not set in, which none of a hit's first tags may name ({@link AiStockSearch.away}). */
563
672
  away?: readonly string[];
564
673
  }
674
+ /**
675
+ * What a picture of a business's world is never OF unless its words name it
676
+ * (AGL-4092): an animal or a toy (as a portfolio's record never is,
677
+ * {@link RECORD_ODD_LEADS}), or a bare body part. Each group is let in whole
678
+ * by any of its words in `said` — the slot's words, its section's, the
679
+ * brief's — so a dog groomer's pictures show dogs and cats alike. As stems;
680
+ * the body's left out where `body` is false (a portrait's face).
681
+ */
682
+ export declare function aiStockOddLeads(said: readonly string[], options?: {
683
+ body?: boolean;
684
+ }): string[];
565
685
  /**
566
686
  * Whether a hit carries a topic its site never named ({@link SENSITIVE_TOPICS}):
567
687
  * a cross, a grave, a flag, a gun, a glass of wine, a child, a mannequin.
@@ -596,9 +716,13 @@ export declare function aiStockSameShoot(a: Pick<StockPhoto, 'id' | 'photographe
596
716
  * A search's ranked hits with those of a shoot no slot shows yet first among
597
717
  * the best (AGL-3856): a team's three cards are three people where the
598
718
  * library has them, never one model three times while another fits as well.
599
- * Every other order is kept.
719
+ * Every other order is kept. A product's are of a shoot no slot shows yet
720
+ * first among ALL its accepted hits (`whole`, AGL-4092): Berm & Bolt's two
721
+ * tires were one contributor's shoot, 32 uploads apart.
600
722
  */
601
- export declare function aiStockFreshShootsFirst(ranked: readonly StockPhoto[], shown: readonly StockPhoto[], judgement: AiStockJudgement): StockPhoto[];
723
+ export declare function aiStockFreshShootsFirst(ranked: readonly StockPhoto[], shown: readonly StockPhoto[], judgement: AiStockJudgement, options?: {
724
+ whole?: boolean;
725
+ }): StockPhoto[];
602
726
  /** The pick among a search's hits: the first {@link aiStockRank} would try, or `null`. */
603
727
  export declare function aiStockPick(photos: readonly StockPhoto[], used: ReadonlySet<string>, seed: string, judgement?: AiStockJudgement): StockPhoto | null;
604
728
  /**
@@ -841,10 +965,12 @@ export declare function aiStockWorldIsUnlisted(terms: Pick<AiStockSiteTerms, 'bu
841
965
  * "freelencing", which no library tags, so its cover hero searched it, found
842
966
  * nothing, and shipped a flat dark band with no photo.
843
967
  */
844
- export declare function aiStockWiderTerms(terms: Pick<AiStockSiteTerms, 'business' | 'craft' | 'broad' | 'domain'>, kind: string): Array<{
968
+ export declare function aiStockWiderTerms(terms: Pick<AiStockSiteTerms, 'business' | 'craft' | 'broad' | 'domain'> & Partial<Pick<AiStockSiteTerms, 'lead'>>, kind: string): Array<{
845
969
  rung: 'kind' | 'starter' | 'generic';
846
970
  terms: AiStockSiteTerms;
847
971
  }>;
972
+ /** Whether a site's own world is outdoors, on a vehicle, with tools or over food ({@link OUTDOOR_AND_TRADE_STEMS}). */
973
+ export declare function aiStockWorldIsOutdoorOrTrade(terms: Pick<AiStockSiteTerms, 'business' | 'craft' | 'domain'> & Partial<Pick<AiStockSiteTerms, 'lead'>>): boolean;
848
974
  /**
849
975
  * The first word of a text that names a craft {@link CRAFT_KIN} lists, as
850
976
  * its table writes it: "gym" of "Synchronicity Gym", "law" of "Hartwell
@@ -852,6 +978,28 @@ export declare function aiStockWiderTerms(terms: Pick<AiStockSiteTerms, 'busines
852
978
  * name ("Hillside") never becomes a world.
853
979
  */
854
980
  export declare function aiStockListedCraft(text: string): string;
981
+ /**
982
+ * How a search's hits are judged for a slot (AGL-3660), as the source judges
983
+ * them: by the search's own words, held to the world it was asked for — the
984
+ * site's own (`site`), or a wider one where the site's found nothing
985
+ * (`world`, AGL-3923). What lets a sensitive topic, an animal or a body part
986
+ * in is always the site's own words. On a site for adults alone no hit names
987
+ * a child; a portrait of one of the business's people names an adult, never
988
+ * leads with a child, and is preferred in its role (AGL-3856). Any other
989
+ * picture never leads with an animal, a toy or a bare body part its words
990
+ * and the brief do not name, unless its first tags name the business's own
991
+ * world too (AGL-4092): Pit Row Tacos' "Come hungry" took a cat. Pure.
992
+ */
993
+ export declare function aiStockJudgementFor(slot: Pick<AiLayoutPictureSlot, 'role' | 'alt' | 'people' | 'product'>, request: AiStockSearch, subject: string, site: AiStockSiteTerms, sectionName?: string, world?: AiStockSiteTerms): AiStockJudgement;
994
+ /**
995
+ * The craft's own photos, the last thing a slot of a craft's site is filled
996
+ * from (AGL-3660): its broad searches, any hit naming the craft itself. Never
997
+ * a desk, a laptop or a living room for a soap shop. A picture that is not a
998
+ * hero nor a product takes only a photo OF the business's own world among its
999
+ * first tags (AGL-4092): a taco trailer's "Race day" took a chicken salad
1000
+ * tagged "taco bowl". Pure.
1001
+ */
1002
+ export declare function aiStockCraftSearches(slot: Pick<AiLayoutPictureSlot, 'role' | 'aspect' | 'record' | 'people' | 'product'>, world: AiStockSiteTerms): AiStockSearch[];
855
1003
  /**
856
1004
  * The source for one page, or `null` when this deployment has no stock
857
1005
  * photo library or no media door, which leaves every slot to the starters.