@aglyn/plugins-ai 1.0.0-beta.246 → 1.0.0-beta.249
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/package.json +17 -17
- package/src/lib/activity/ai-activity-actions.js +5 -1
- package/src/lib/activity/ai-activity-actions.js.map +1 -1
- package/src/lib/components/ai-job-links.js +14 -0
- package/src/lib/components/ai-job-links.js.map +1 -1
- package/src/lib/components/ai-site-start-card.component.d.ts +1 -1
- package/src/lib/components/ai-site-start-card.component.js +92 -19
- package/src/lib/components/ai-site-start-card.component.js.map +1 -1
- package/src/lib/declarations.server.js +12 -0
- package/src/lib/declarations.server.js.map +1 -1
- package/src/lib/jobs/ai-build-capabilities.js +56 -2
- package/src/lib/jobs/ai-build-capabilities.js.map +1 -1
- package/src/lib/jobs/ai-job-build-step.d.ts +3 -8
- package/src/lib/jobs/ai-job-build-step.js +49 -12
- package/src/lib/jobs/ai-job-build-step.js.map +1 -1
- package/src/lib/jobs/ai-job-form-dataset.d.ts +8 -5
- package/src/lib/jobs/ai-job-form-dataset.js +28 -10
- package/src/lib/jobs/ai-job-form-dataset.js.map +1 -1
- package/src/lib/jobs/ai-job-form-step.d.ts +20 -4
- package/src/lib/jobs/ai-job-form-step.js +98 -28
- package/src/lib/jobs/ai-job-form-step.js.map +1 -1
- package/src/lib/jobs/ai-job-layout-language.d.ts +6 -2
- package/src/lib/jobs/ai-job-layout-language.js +16 -5
- package/src/lib/jobs/ai-job-layout-language.js.map +1 -1
- package/src/lib/jobs/ai-job-layout-step.js +4 -1
- package/src/lib/jobs/ai-job-layout-step.js.map +1 -1
- package/src/lib/jobs/ai-job-media-step.d.ts +239 -0
- package/src/lib/jobs/ai-job-media-step.js +610 -0
- package/src/lib/jobs/ai-job-media-step.js.map +1 -0
- package/src/lib/jobs/ai-job-page-language.d.ts +2 -0
- package/src/lib/jobs/ai-job-page-language.js +9 -0
- package/src/lib/jobs/ai-job-page-language.js.map +1 -1
- package/src/lib/jobs/ai-job-page-sections.js +4 -3
- package/src/lib/jobs/ai-job-page-sections.js.map +1 -1
- package/src/lib/jobs/ai-job-page-step.js +3 -2
- package/src/lib/jobs/ai-job-page-step.js.map +1 -1
- package/src/lib/jobs/ai-job-plan-step.d.ts +10 -1
- package/src/lib/jobs/ai-job-plan-step.js +73 -15
- package/src/lib/jobs/ai-job-plan-step.js.map +1 -1
- package/src/lib/jobs/ai-job-settings-step.d.ts +0 -4
- package/src/lib/jobs/ai-job-settings-step.js +2 -7
- package/src/lib/jobs/ai-job-settings-step.js.map +1 -1
- package/src/lib/jobs/ai-job-site-content.d.ts +2 -2
- package/src/lib/jobs/ai-job-site-content.js +5 -3
- package/src/lib/jobs/ai-job-site-content.js.map +1 -1
- package/src/lib/jobs/ai-job-site-datasets.d.ts +1 -1
- package/src/lib/jobs/ai-job-site-datasets.js +3 -2
- package/src/lib/jobs/ai-job-site-datasets.js.map +1 -1
- package/src/lib/jobs/ai-job-site-events.d.ts +148 -0
- package/src/lib/jobs/ai-job-site-events.js +313 -0
- package/src/lib/jobs/ai-job-site-events.js.map +1 -0
- package/src/lib/jobs/ai-job-site-step.d.ts +9 -3
- package/src/lib/jobs/ai-job-site-step.js +63 -17
- package/src/lib/jobs/ai-job-site-step.js.map +1 -1
- package/src/lib/jobs/ai-job-tracking-step.d.ts +184 -0
- package/src/lib/jobs/ai-job-tracking-step.js +501 -0
- package/src/lib/jobs/ai-job-tracking-step.js.map +1 -0
- package/src/lib/jobs/ai-layout-stock-photos.d.ts +41 -0
- package/src/lib/jobs/ai-layout-stock-photos.js +71 -3
- package/src/lib/jobs/ai-layout-stock-photos.js.map +1 -1
- package/src/lib/jobs/ai-site-publish.js +2 -3
- package/src/lib/jobs/ai-site-publish.js.map +1 -1
- package/src/lib/jobs/ai-stock-photo-picker.d.ts +24 -0
- package/src/lib/jobs/ai-stock-photo-picker.js +108 -0
- package/src/lib/jobs/ai-stock-photo-picker.js.map +1 -0
- package/src/lib/jobs/fixtures/ai-jazz-events-build-plan-recording.d.ts +37 -0
- package/src/lib/jobs/fixtures/ai-jazz-events-build-plan-recording.js +47 -0
- package/src/lib/jobs/fixtures/ai-jazz-events-build-plan-recording.js.map +1 -0
- package/src/lib/jobs/fixtures/ai-stock-photo-agl3760-recordings.d.ts +21 -0
- package/src/lib/jobs/fixtures/ai-stock-photo-agl3760-recordings.js +128 -0
- package/src/lib/jobs/fixtures/ai-stock-photo-agl3760-recordings.js.map +1 -0
- package/src/lib/jobs/fixtures/ai-stock-photo-agl3769-recordings.d.ts +21 -0
- package/src/lib/jobs/fixtures/ai-stock-photo-agl3769-recordings.js +126 -0
- package/src/lib/jobs/fixtures/ai-stock-photo-agl3769-recordings.js.map +1 -0
- package/src/lib/layout-language/ai-layout-compiler.d.ts +10 -4
- package/src/lib/layout-language/ai-layout-compiler.js +38 -19
- package/src/lib/layout-language/ai-layout-compiler.js.map +1 -1
- package/src/lib/layout-language/ai-layout-frame.d.ts +7 -5
- package/src/lib/layout-language/ai-layout-frame.js +12 -9
- package/src/lib/layout-language/ai-layout-frame.js.map +1 -1
- package/src/lib/layout-language/ai-layout-gaps.js +3 -1
- package/src/lib/layout-language/ai-layout-gaps.js.map +1 -1
- package/src/lib/layout-language/ai-layout-labels.d.ts +70 -0
- package/src/lib/layout-language/ai-layout-labels.js +162 -0
- package/src/lib/layout-language/ai-layout-labels.js.map +1 -0
- package/src/lib/layout-language/ai-layout-links.js +5 -2
- package/src/lib/layout-language/ai-layout-links.js.map +1 -1
- package/src/lib/layout-language/ai-layout-listings.d.ts +14 -1
- package/src/lib/layout-language/ai-layout-listings.js +32 -5
- package/src/lib/layout-language/ai-layout-listings.js.map +1 -1
- package/src/lib/model/ai-build-event-page.d.ts +70 -0
- package/src/lib/model/ai-build-event-page.js +145 -0
- package/src/lib/model/ai-build-event-page.js.map +1 -0
- package/src/lib/model/ai-build-job.d.ts +21 -0
- package/src/lib/model/ai-build-job.js +39 -0
- package/src/lib/model/ai-build-job.js.map +1 -1
- package/src/lib/model/ai-build-plan.d.ts +25 -14
- package/src/lib/model/ai-build-plan.js +33 -23
- package/src/lib/model/ai-build-plan.js.map +1 -1
- package/src/lib/model/ai-job-activity.js +3 -1
- package/src/lib/model/ai-job-activity.js.map +1 -1
- package/src/lib/model/ai-jobs.types.d.ts +10 -2
- package/src/lib/model/ai-jobs.types.js +3 -1
- package/src/lib/model/ai-jobs.types.js.map +1 -1
- package/src/lib/model/ai-plan-capabilities.d.ts +8 -0
- package/src/lib/model/ai-plan-capabilities.js.map +1 -1
- package/src/lib/model/ai-site-inventory.d.ts +2 -0
- package/src/lib/model/ai-site-inventory.js +5 -0
- package/src/lib/model/ai-site-inventory.js.map +1 -1
- package/src/lib/model/ai-site-job.d.ts +2 -2
- package/src/lib/model/ai-site-job.js +3 -3
- package/src/lib/model/ai-site-job.js.map +1 -1
- package/src/lib/runtime/ai-doctrine-validators.d.ts +25 -3
- package/src/lib/runtime/ai-doctrine-validators.js +53 -6
- package/src/lib/runtime/ai-doctrine-validators.js.map +1 -1
- package/src/lib/runtime/ai-doctrine.d.ts +6 -1
- package/src/lib/runtime/ai-doctrine.js +13 -9
- package/src/lib/runtime/ai-doctrine.js.map +1 -1
- package/src/lib/runtime/ai-eval-live.d.ts +1 -1
- package/src/lib/runtime/ai-eval-live.js +1 -1
- package/src/lib/runtime/ai-eval-live.js.map +1 -1
- package/src/lib/runtime/ai-palette.d.ts +3 -1
- package/src/lib/runtime/ai-palette.generated.js +498 -10
- package/src/lib/runtime/ai-palette.generated.js.map +1 -1
- package/src/lib/runtime/ai-palette.js +5 -3
- package/src/lib/runtime/ai-palette.js.map +1 -1
- package/src/lib/runtime/ai-template-examples.js +8 -2
- package/src/lib/runtime/ai-template-examples.js.map +1 -1
- package/src/lib/server.js +8 -0
- package/src/lib/server.js.map +1 -1
|
@@ -18,6 +18,7 @@ import { type PluginMediaIngest } from '@aglyn/aglyn/plugin-manager/plugin-media
|
|
|
18
18
|
import { type StockPhoto, type StockPhotoOrientation, type StockPhotoProvider, type StockPhotoSearchRequest } from '@aglyn/aglyn/plugin-manager/stock-photo-provider';
|
|
19
19
|
import type { NodesMap } from '@aglyn/aglyn/types/nodes';
|
|
20
20
|
import { type AiLayoutPictureSlot, type AiLayoutPictureSource } from '../layout-language/ai-layout-pictures';
|
|
21
|
+
import type { AiBuildPlan } from '../model/ai-build-plan';
|
|
21
22
|
/**
|
|
22
23
|
* STOCK PHOTOS FOR A LANGUAGE PAGE'S PICTURE SLOTS (AGL-3660).
|
|
23
24
|
*
|
|
@@ -241,6 +242,13 @@ export interface AiStockSearch extends StockPhotoSearchRequest {
|
|
|
241
242
|
lead?: boolean;
|
|
242
243
|
/** Whether the hit's first tags must name the site's world, where the object need not lead (AGL-3660). */
|
|
243
244
|
leadWorld?: boolean;
|
|
245
|
+
/**
|
|
246
|
+
* Whether the hit's FIRST tag must name the site's world (AGL-3760): what
|
|
247
|
+
* the photo is of, most of all. A hero is the site's opening picture; the
|
|
248
|
+
* copper-fern-candle-co start (beta.246) took a latte with a candle behind
|
|
249
|
+
* it, its tags "coffee, mobile wallpaper 4k, latte art, …, candle".
|
|
250
|
+
*/
|
|
251
|
+
first?: boolean;
|
|
244
252
|
/** Phrases (as stems) of which one must be among the hit's first tags: a borrowed photo is OF the product's category (AGL-3660). */
|
|
245
253
|
leadAny?: readonly string[];
|
|
246
254
|
/** Whether it fills a product: no room, no scene, no fragrance bottle ({@link PRODUCT_SCENES}, AGL-3660). */
|
|
@@ -342,6 +350,8 @@ export interface AiStockJudgement {
|
|
|
342
350
|
lead?: boolean;
|
|
343
351
|
/** Whether the hit's first tags must name the site's world ({@link AiStockSearch.leadWorld}). */
|
|
344
352
|
leadWorld?: boolean;
|
|
353
|
+
/** Whether the hit's first tag must name the site's world ({@link AiStockSearch.first}). */
|
|
354
|
+
first?: boolean;
|
|
345
355
|
/** The stems of the site's business type or brief, which let a sensitive topic in ({@link AiStockSiteTerms.named}). */
|
|
346
356
|
named?: readonly string[];
|
|
347
357
|
/** Rival crafts: a hit naming one is rejected unless it names the site's core words ({@link AiStockSiteTerms.rivals}). */
|
|
@@ -398,6 +408,13 @@ export interface AiLayoutStockPhotoSourceInput {
|
|
|
398
408
|
seed: string;
|
|
399
409
|
/** The site's business type, else the job's brief. */
|
|
400
410
|
business: string;
|
|
411
|
+
/** The site's language, from its plan (AGL-3750); absent, English. */
|
|
412
|
+
language?: string;
|
|
413
|
+
/**
|
|
414
|
+
* The plan's photo words, in English (AGL-3760): what a site in another
|
|
415
|
+
* language is searched by, in place of its business type and its alt texts.
|
|
416
|
+
*/
|
|
417
|
+
photoWords?: string;
|
|
401
418
|
/** The page's section names, by plan index. */
|
|
402
419
|
sectionNames: readonly string[];
|
|
403
420
|
/**
|
|
@@ -416,6 +433,30 @@ export interface AiLayoutStockPhotoDeps {
|
|
|
416
433
|
ingest?: () => PluginMediaIngest | null;
|
|
417
434
|
budgetMs?: number;
|
|
418
435
|
}
|
|
436
|
+
/** A job's language and English photo words (AGL-3760), as a stock photo source takes them. */
|
|
437
|
+
export declare function aiStockPhotoWordsOf(job: {
|
|
438
|
+
plan?: Pick<AiBuildPlan, 'language' | 'photoWords'> | null;
|
|
439
|
+
}): Pick<AiLayoutStockPhotoSourceInput, 'language' | 'photoWords'>;
|
|
440
|
+
/**
|
|
441
|
+
* The subject a plan's photo words lead with (AGL-3769): its first word that
|
|
442
|
+
* is not filler, with the place or person words that follow it — "bakery" of
|
|
443
|
+
* "bakery pan dulce conchas", "candle shop" of "candle shop soy candles",
|
|
444
|
+
* "ceramic artist" of "ceramic artist stoneware bowls". The words are subject
|
|
445
|
+
* first, never an English noun phrase with its head last, and what follows
|
|
446
|
+
* the subject may be the brief's own names in English letters: Panaderia La
|
|
447
|
+
* Espiga Dorada's "pan dulce conchas" read as the business, made "concha" its
|
|
448
|
+
* craft, and placed purple ceanothus flowers, tagged "ceanothus concha", as
|
|
449
|
+
* its hero. Empty when every word is filler.
|
|
450
|
+
*/
|
|
451
|
+
export declare function aiStockPhotoWordsSubject(photoWords: string): string;
|
|
452
|
+
/**
|
|
453
|
+
* What a source's photos are searched and judged by (AGL-3760, AGL-3769): a
|
|
454
|
+
* site in another language by the subject of its plan's English photo words,
|
|
455
|
+
* every other site by its business type. One reading for every slot of every
|
|
456
|
+
* source — hero, background, gallery, card, product, post — so no slot
|
|
457
|
+
* searches by words another slot is held against.
|
|
458
|
+
*/
|
|
459
|
+
export declare function aiStockSourceTerms(input: Pick<AiLayoutStockPhotoSourceInput, 'business' | 'language' | 'photoWords'>): AiStockSiteTerms;
|
|
419
460
|
/**
|
|
420
461
|
* The source for one page, or `null` when this deployment has no stock
|
|
421
462
|
* photo library or no media door, which leaves every slot to the starters.
|
|
@@ -18,6 +18,7 @@ import { _ as _extends } from "@swc/helpers/_/_extends";
|
|
|
18
18
|
import { STOCK_PHOTO_QUERY_MAX_CHARS, stockPhotoProvider, stockPhotoSourceKey } from "@aglyn/aglyn/plugin-manager/stock-photo-provider";
|
|
19
19
|
import { aiLayoutSeedNumber } from "../layout-language/ai-layout-pictures.js";
|
|
20
20
|
import { aiStorefrontSays } from "../layout-language/ai-layout-storefront.js";
|
|
21
|
+
import { aiLayoutSpeaksOtherThanEnglish } from "../layout-language/ai-layout-labels.js";
|
|
21
22
|
/**
|
|
22
23
|
* STOCK PHOTOS FOR A LANGUAGE PAGE'S PICTURE SLOTS (AGL-3660).
|
|
23
24
|
*
|
|
@@ -1525,6 +1526,8 @@ const clip = (query)=>query.replace(/\s+/g, ' ').trim().slice(0, STOCK_PHOTO_QUE
|
|
|
1525
1526
|
]
|
|
1526
1527
|
} : {}) : {}, slot.role === 'hero' && core.length ? {
|
|
1527
1528
|
category: core
|
|
1529
|
+
} : {}, slot.role === 'hero' ? {
|
|
1530
|
+
first: true
|
|
1528
1531
|
} : {}));
|
|
1529
1532
|
}
|
|
1530
1533
|
return searches;
|
|
@@ -1650,6 +1653,20 @@ const clip = (query)=>query.replace(/\s+/g, ' ').trim().slice(0, STOCK_PHOTO_QUE
|
|
|
1650
1653
|
const world = demanded || kinNamed || domain.some((stem)=>hit.all.has(stem));
|
|
1651
1654
|
const worldLead = (anyOf.length ? anyOf.some((stem)=>hit.lead.has(stem)) : required.length > 0 && required.every((stem)=>hit.lead.has(stem))) || kinLead || domain.some((stem)=>hit.lead.has(stem));
|
|
1652
1655
|
if (judgement.leadWorld && !worldLead) return 0;
|
|
1656
|
+
// The first tag alone, never the page's address: Pixabay's slug repeats a
|
|
1657
|
+
// late tag ("coffee-latte-art-candle-…"). A site whose words name no world
|
|
1658
|
+
// holds its hero to none.
|
|
1659
|
+
const worldStems = new Set([
|
|
1660
|
+
...anyOf,
|
|
1661
|
+
...required,
|
|
1662
|
+
...domain
|
|
1663
|
+
]);
|
|
1664
|
+
if (judgement.first && (worldStems.size || kin.length)) {
|
|
1665
|
+
const firstWorld = hit.firstPhrase.split(' ').some((stem)=>worldStems.has(stem)) || kin.some((phrase)=>among([
|
|
1666
|
+
hit.firstPhrase
|
|
1667
|
+
], phrase));
|
|
1668
|
+
if (!firstWorld) return 0;
|
|
1669
|
+
}
|
|
1653
1670
|
// What the photo is most of all: its first tag names the object, its kin or what it must be OF.
|
|
1654
1671
|
const firstNamed = (phrases)=>phrases.some((phrase)=>Boolean(phrase) && among([
|
|
1655
1672
|
hit.firstPhrase
|
|
@@ -1752,6 +1769,45 @@ const EXTENSIONS = {
|
|
|
1752
1769
|
'image/png': 'png',
|
|
1753
1770
|
'image/webp': 'webp'
|
|
1754
1771
|
};
|
|
1772
|
+
/** A job's language and English photo words (AGL-3760), as a stock photo source takes them. */ export function aiStockPhotoWordsOf(job) {
|
|
1773
|
+
const plan = job.plan;
|
|
1774
|
+
return _extends({}, (plan == null ? void 0 : plan.language) ? {
|
|
1775
|
+
language: plan.language
|
|
1776
|
+
} : {}, (plan == null ? void 0 : plan.photoWords) ? {
|
|
1777
|
+
photoWords: plan.photoWords
|
|
1778
|
+
} : {});
|
|
1779
|
+
}
|
|
1780
|
+
/**
|
|
1781
|
+
* The subject a plan's photo words lead with (AGL-3769): its first word that
|
|
1782
|
+
* is not filler, with the place or person words that follow it — "bakery" of
|
|
1783
|
+
* "bakery pan dulce conchas", "candle shop" of "candle shop soy candles",
|
|
1784
|
+
* "ceramic artist" of "ceramic artist stoneware bowls". The words are subject
|
|
1785
|
+
* first, never an English noun phrase with its head last, and what follows
|
|
1786
|
+
* the subject may be the brief's own names in English letters: Panaderia La
|
|
1787
|
+
* Espiga Dorada's "pan dulce conchas" read as the business, made "concha" its
|
|
1788
|
+
* craft, and placed purple ceanothus flowers, tagged "ceanothus concha", as
|
|
1789
|
+
* its hero. Empty when every word is filler.
|
|
1790
|
+
*/ export function aiStockPhotoWordsSubject(photoWords) {
|
|
1791
|
+
const list = contentWords(photoWords);
|
|
1792
|
+
const start = list.findIndex((word)=>!FILLER.has(word) && !SITE_KINDS.has(word));
|
|
1793
|
+
if (start < 0) return '';
|
|
1794
|
+
let end = start + 1;
|
|
1795
|
+
while(end < list.length && (VENUES.has(list[end]) || ROLES.has(list[end])))end += 1;
|
|
1796
|
+
return list.slice(start, end).join(' ');
|
|
1797
|
+
}
|
|
1798
|
+
/**
|
|
1799
|
+
* What a source's photos are searched and judged by (AGL-3760, AGL-3769): a
|
|
1800
|
+
* site in another language by the subject of its plan's English photo words,
|
|
1801
|
+
* every other site by its business type. One reading for every slot of every
|
|
1802
|
+
* source — hero, background, gallery, card, product, post — so no slot
|
|
1803
|
+
* searches by words another slot is held against.
|
|
1804
|
+
*/ export function aiStockSourceTerms(input) {
|
|
1805
|
+
return aiStockSiteTerms(aiStockSourceSubject(input) || input.business);
|
|
1806
|
+
}
|
|
1807
|
+
/** The photo words' subject a site in another language is searched by ({@link aiStockSourceTerms}); empty for every other site. */ function aiStockSourceSubject(input) {
|
|
1808
|
+
var _input_photoWords;
|
|
1809
|
+
return aiLayoutSpeaksOtherThanEnglish(input.language) ? aiStockPhotoWordsSubject((_input_photoWords = input.photoWords) != null ? _input_photoWords : '') : '';
|
|
1810
|
+
}
|
|
1755
1811
|
/**
|
|
1756
1812
|
* The source for one page, or `null` when this deployment has no stock
|
|
1757
1813
|
* photo library or no media door, which leaves every slot to the starters.
|
|
@@ -1760,7 +1816,14 @@ const EXTENSIONS = {
|
|
|
1760
1816
|
const provider = ((_deps_provider = deps.provider) != null ? _deps_provider : stockPhotoProvider)();
|
|
1761
1817
|
const ingest = ((_deps_ingest = deps.ingest) != null ? _deps_ingest : pluginMediaIngest)();
|
|
1762
1818
|
if (!provider || !ingest || !input.hostId || !input.uid) return null;
|
|
1763
|
-
|
|
1819
|
+
// The libraries are tagged in English (AGL-3760). A Spanish bakery's type,
|
|
1820
|
+
// "Una panadería familiar de San Antonio con pan dulce…", read as the
|
|
1821
|
+
// business "con pan dulce", and its hero searched that and placed the Río
|
|
1822
|
+
// Dulce at dusk; a site in another language is searched by its plan's
|
|
1823
|
+
// English photo words' subject ({@link aiStockSourceTerms}), and its slots'
|
|
1824
|
+
// alt texts, in its own language, name no subject a search could use.
|
|
1825
|
+
const english = aiStockSourceSubject(input);
|
|
1826
|
+
const terms = aiStockSourceTerms(input);
|
|
1764
1827
|
return async (slots)=>{
|
|
1765
1828
|
var _deps_budgetMs, _input_avoid;
|
|
1766
1829
|
const timeout = AbortSignal.timeout((_deps_budgetMs = deps.budgetMs) != null ? _deps_budgetMs : AI_LAYOUT_STOCK_PHOTOS_BUDGET_MS);
|
|
@@ -1792,6 +1855,7 @@ const EXTENSIONS = {
|
|
|
1792
1855
|
delete request.kin;
|
|
1793
1856
|
delete request.lead;
|
|
1794
1857
|
delete request.leadWorld;
|
|
1858
|
+
delete request.first;
|
|
1795
1859
|
delete request.category;
|
|
1796
1860
|
const key = JSON.stringify([
|
|
1797
1861
|
request.query,
|
|
@@ -1917,6 +1981,8 @@ const EXTENSIONS = {
|
|
|
1917
1981
|
lead: true
|
|
1918
1982
|
} : {}, request.leadWorld ? {
|
|
1919
1983
|
leadWorld: true
|
|
1984
|
+
} : {}, request.first ? {
|
|
1985
|
+
first: true
|
|
1920
1986
|
} : {});
|
|
1921
1987
|
};
|
|
1922
1988
|
/**
|
|
@@ -1939,7 +2005,9 @@ const EXTENSIONS = {
|
|
|
1939
2005
|
}, size, {
|
|
1940
2006
|
broad: true,
|
|
1941
2007
|
category: terms.core
|
|
1942
|
-
}, slot.
|
|
2008
|
+
}, slot.role === 'hero' ? {
|
|
2009
|
+
first: true
|
|
2010
|
+
} : {}, slot.product ? {
|
|
1943
2011
|
product: true,
|
|
1944
2012
|
tier: 'weak'
|
|
1945
2013
|
} : {}));
|
|
@@ -1954,7 +2022,7 @@ const EXTENSIONS = {
|
|
|
1954
2022
|
continue;
|
|
1955
2023
|
}
|
|
1956
2024
|
const sectionName = (_input_sectionNames_slot_sectionIndex = input.sectionNames[slot.sectionIndex]) != null ? _input_sectionNames_slot_sectionIndex : '';
|
|
1957
|
-
const subject = aiStockSubjectWords(slot.alt, sectionName);
|
|
2025
|
+
const subject = english ? '' : aiStockSubjectWords(slot.alt, sectionName);
|
|
1958
2026
|
let choice = null;
|
|
1959
2027
|
const requests = [
|
|
1960
2028
|
...slot.product ? aiStockProductSearches(slot, terms.craft, terms.domain, {
|