@aglyn/plugins-ai 1.0.0-beta.246 → 1.0.0-beta.247

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 (127) hide show
  1. package/package.json +17 -17
  2. package/src/lib/activity/ai-activity-actions.js +5 -1
  3. package/src/lib/activity/ai-activity-actions.js.map +1 -1
  4. package/src/lib/components/ai-job-links.js +14 -0
  5. package/src/lib/components/ai-job-links.js.map +1 -1
  6. package/src/lib/components/ai-site-start-card.component.d.ts +1 -1
  7. package/src/lib/components/ai-site-start-card.component.js +92 -19
  8. package/src/lib/components/ai-site-start-card.component.js.map +1 -1
  9. package/src/lib/declarations.server.js +12 -0
  10. package/src/lib/declarations.server.js.map +1 -1
  11. package/src/lib/jobs/ai-build-capabilities.js +56 -2
  12. package/src/lib/jobs/ai-build-capabilities.js.map +1 -1
  13. package/src/lib/jobs/ai-job-build-step.d.ts +3 -8
  14. package/src/lib/jobs/ai-job-build-step.js +49 -12
  15. package/src/lib/jobs/ai-job-build-step.js.map +1 -1
  16. package/src/lib/jobs/ai-job-form-dataset.d.ts +8 -5
  17. package/src/lib/jobs/ai-job-form-dataset.js +28 -10
  18. package/src/lib/jobs/ai-job-form-dataset.js.map +1 -1
  19. package/src/lib/jobs/ai-job-form-step.d.ts +20 -4
  20. package/src/lib/jobs/ai-job-form-step.js +98 -28
  21. package/src/lib/jobs/ai-job-form-step.js.map +1 -1
  22. package/src/lib/jobs/ai-job-layout-language.d.ts +6 -2
  23. package/src/lib/jobs/ai-job-layout-language.js +16 -5
  24. package/src/lib/jobs/ai-job-layout-language.js.map +1 -1
  25. package/src/lib/jobs/ai-job-layout-step.js +4 -1
  26. package/src/lib/jobs/ai-job-layout-step.js.map +1 -1
  27. package/src/lib/jobs/ai-job-media-step.d.ts +239 -0
  28. package/src/lib/jobs/ai-job-media-step.js +610 -0
  29. package/src/lib/jobs/ai-job-media-step.js.map +1 -0
  30. package/src/lib/jobs/ai-job-page-language.d.ts +2 -0
  31. package/src/lib/jobs/ai-job-page-language.js +9 -0
  32. package/src/lib/jobs/ai-job-page-language.js.map +1 -1
  33. package/src/lib/jobs/ai-job-page-sections.js +4 -3
  34. package/src/lib/jobs/ai-job-page-sections.js.map +1 -1
  35. package/src/lib/jobs/ai-job-page-step.js +3 -2
  36. package/src/lib/jobs/ai-job-page-step.js.map +1 -1
  37. package/src/lib/jobs/ai-job-plan-step.d.ts +10 -1
  38. package/src/lib/jobs/ai-job-plan-step.js +73 -15
  39. package/src/lib/jobs/ai-job-plan-step.js.map +1 -1
  40. package/src/lib/jobs/ai-job-settings-step.d.ts +0 -4
  41. package/src/lib/jobs/ai-job-settings-step.js +2 -7
  42. package/src/lib/jobs/ai-job-settings-step.js.map +1 -1
  43. package/src/lib/jobs/ai-job-site-content.d.ts +2 -2
  44. package/src/lib/jobs/ai-job-site-content.js +5 -3
  45. package/src/lib/jobs/ai-job-site-content.js.map +1 -1
  46. package/src/lib/jobs/ai-job-site-datasets.d.ts +1 -1
  47. package/src/lib/jobs/ai-job-site-datasets.js +3 -2
  48. package/src/lib/jobs/ai-job-site-datasets.js.map +1 -1
  49. package/src/lib/jobs/ai-job-site-events.d.ts +148 -0
  50. package/src/lib/jobs/ai-job-site-events.js +313 -0
  51. package/src/lib/jobs/ai-job-site-events.js.map +1 -0
  52. package/src/lib/jobs/ai-job-site-step.d.ts +9 -3
  53. package/src/lib/jobs/ai-job-site-step.js +63 -17
  54. package/src/lib/jobs/ai-job-site-step.js.map +1 -1
  55. package/src/lib/jobs/ai-job-tracking-step.d.ts +184 -0
  56. package/src/lib/jobs/ai-job-tracking-step.js +501 -0
  57. package/src/lib/jobs/ai-job-tracking-step.js.map +1 -0
  58. package/src/lib/jobs/ai-layout-stock-photos.d.ts +21 -0
  59. package/src/lib/jobs/ai-layout-stock-photos.js +41 -4
  60. package/src/lib/jobs/ai-layout-stock-photos.js.map +1 -1
  61. package/src/lib/jobs/ai-site-publish.js +2 -3
  62. package/src/lib/jobs/ai-site-publish.js.map +1 -1
  63. package/src/lib/jobs/ai-stock-photo-picker.d.ts +24 -0
  64. package/src/lib/jobs/ai-stock-photo-picker.js +108 -0
  65. package/src/lib/jobs/ai-stock-photo-picker.js.map +1 -0
  66. package/src/lib/jobs/fixtures/ai-jazz-events-build-plan-recording.d.ts +37 -0
  67. package/src/lib/jobs/fixtures/ai-jazz-events-build-plan-recording.js +47 -0
  68. package/src/lib/jobs/fixtures/ai-jazz-events-build-plan-recording.js.map +1 -0
  69. package/src/lib/jobs/fixtures/ai-stock-photo-agl3760-recordings.d.ts +21 -0
  70. package/src/lib/jobs/fixtures/ai-stock-photo-agl3760-recordings.js +128 -0
  71. package/src/lib/jobs/fixtures/ai-stock-photo-agl3760-recordings.js.map +1 -0
  72. package/src/lib/layout-language/ai-layout-compiler.d.ts +10 -4
  73. package/src/lib/layout-language/ai-layout-compiler.js +38 -19
  74. package/src/lib/layout-language/ai-layout-compiler.js.map +1 -1
  75. package/src/lib/layout-language/ai-layout-frame.d.ts +7 -5
  76. package/src/lib/layout-language/ai-layout-frame.js +12 -9
  77. package/src/lib/layout-language/ai-layout-frame.js.map +1 -1
  78. package/src/lib/layout-language/ai-layout-gaps.js +3 -1
  79. package/src/lib/layout-language/ai-layout-gaps.js.map +1 -1
  80. package/src/lib/layout-language/ai-layout-labels.d.ts +70 -0
  81. package/src/lib/layout-language/ai-layout-labels.js +162 -0
  82. package/src/lib/layout-language/ai-layout-labels.js.map +1 -0
  83. package/src/lib/layout-language/ai-layout-links.js +5 -2
  84. package/src/lib/layout-language/ai-layout-links.js.map +1 -1
  85. package/src/lib/layout-language/ai-layout-listings.d.ts +14 -1
  86. package/src/lib/layout-language/ai-layout-listings.js +32 -5
  87. package/src/lib/layout-language/ai-layout-listings.js.map +1 -1
  88. package/src/lib/model/ai-build-event-page.d.ts +70 -0
  89. package/src/lib/model/ai-build-event-page.js +145 -0
  90. package/src/lib/model/ai-build-event-page.js.map +1 -0
  91. package/src/lib/model/ai-build-job.d.ts +21 -0
  92. package/src/lib/model/ai-build-job.js +39 -0
  93. package/src/lib/model/ai-build-job.js.map +1 -1
  94. package/src/lib/model/ai-build-plan.d.ts +25 -14
  95. package/src/lib/model/ai-build-plan.js +33 -23
  96. package/src/lib/model/ai-build-plan.js.map +1 -1
  97. package/src/lib/model/ai-job-activity.js +3 -1
  98. package/src/lib/model/ai-job-activity.js.map +1 -1
  99. package/src/lib/model/ai-jobs.types.d.ts +10 -2
  100. package/src/lib/model/ai-jobs.types.js +3 -1
  101. package/src/lib/model/ai-jobs.types.js.map +1 -1
  102. package/src/lib/model/ai-plan-capabilities.d.ts +8 -0
  103. package/src/lib/model/ai-plan-capabilities.js.map +1 -1
  104. package/src/lib/model/ai-site-inventory.d.ts +2 -0
  105. package/src/lib/model/ai-site-inventory.js +5 -0
  106. package/src/lib/model/ai-site-inventory.js.map +1 -1
  107. package/src/lib/model/ai-site-job.d.ts +2 -2
  108. package/src/lib/model/ai-site-job.js +3 -3
  109. package/src/lib/model/ai-site-job.js.map +1 -1
  110. package/src/lib/runtime/ai-doctrine-validators.d.ts +25 -3
  111. package/src/lib/runtime/ai-doctrine-validators.js +53 -6
  112. package/src/lib/runtime/ai-doctrine-validators.js.map +1 -1
  113. package/src/lib/runtime/ai-doctrine.d.ts +6 -1
  114. package/src/lib/runtime/ai-doctrine.js +13 -9
  115. package/src/lib/runtime/ai-doctrine.js.map +1 -1
  116. package/src/lib/runtime/ai-eval-live.d.ts +1 -1
  117. package/src/lib/runtime/ai-eval-live.js +1 -1
  118. package/src/lib/runtime/ai-eval-live.js.map +1 -1
  119. package/src/lib/runtime/ai-palette.d.ts +3 -1
  120. package/src/lib/runtime/ai-palette.generated.js +498 -10
  121. package/src/lib/runtime/ai-palette.generated.js.map +1 -1
  122. package/src/lib/runtime/ai-palette.js +5 -3
  123. package/src/lib/runtime/ai-palette.js.map +1 -1
  124. package/src/lib/runtime/ai-template-examples.js +8 -2
  125. package/src/lib/runtime/ai-template-examples.js.map +1 -1
  126. package/src/lib/server.js +8 -0
  127. package/src/lib/server.js.map +1 -1
@@ -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,15 +1769,30 @@ 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
+ }
1755
1780
  /**
1756
1781
  * The source for one page, or `null` when this deployment has no stock
1757
1782
  * photo library or no media door, which leaves every slot to the starters.
1758
1783
  */ export function aiLayoutStockPhotoSource(input, deps = {}) {
1759
- var _deps_provider, _deps_ingest;
1784
+ var _deps_provider, _deps_ingest, _input_photoWords;
1760
1785
  const provider = ((_deps_provider = deps.provider) != null ? _deps_provider : stockPhotoProvider)();
1761
1786
  const ingest = ((_deps_ingest = deps.ingest) != null ? _deps_ingest : pluginMediaIngest)();
1762
1787
  if (!provider || !ingest || !input.hostId || !input.uid) return null;
1763
- const terms = aiStockSiteTerms(input.business);
1788
+ // The libraries are tagged in English (AGL-3760). A Spanish bakery's type,
1789
+ // "Una panadería familiar de San Antonio con pan dulce…", read as the
1790
+ // business "con pan dulce", and its hero searched that and placed the Río
1791
+ // Dulce at dusk; a site in another language is searched by its plan's
1792
+ // English photo words, and its slots' alt texts, in its own language, name
1793
+ // no subject a search could use.
1794
+ const english = aiLayoutSpeaksOtherThanEnglish(input.language) ? ((_input_photoWords = input.photoWords) != null ? _input_photoWords : '').trim() : '';
1795
+ const terms = aiStockSiteTerms(english || input.business);
1764
1796
  return async (slots)=>{
1765
1797
  var _deps_budgetMs, _input_avoid;
1766
1798
  const timeout = AbortSignal.timeout((_deps_budgetMs = deps.budgetMs) != null ? _deps_budgetMs : AI_LAYOUT_STOCK_PHOTOS_BUDGET_MS);
@@ -1792,6 +1824,7 @@ const EXTENSIONS = {
1792
1824
  delete request.kin;
1793
1825
  delete request.lead;
1794
1826
  delete request.leadWorld;
1827
+ delete request.first;
1795
1828
  delete request.category;
1796
1829
  const key = JSON.stringify([
1797
1830
  request.query,
@@ -1917,6 +1950,8 @@ const EXTENSIONS = {
1917
1950
  lead: true
1918
1951
  } : {}, request.leadWorld ? {
1919
1952
  leadWorld: true
1953
+ } : {}, request.first ? {
1954
+ first: true
1920
1955
  } : {});
1921
1956
  };
1922
1957
  /**
@@ -1939,7 +1974,9 @@ const EXTENSIONS = {
1939
1974
  }, size, {
1940
1975
  broad: true,
1941
1976
  category: terms.core
1942
- }, slot.product ? {
1977
+ }, slot.role === 'hero' ? {
1978
+ first: true
1979
+ } : {}, slot.product ? {
1943
1980
  product: true,
1944
1981
  tier: 'weak'
1945
1982
  } : {}));
@@ -1954,7 +1991,7 @@ const EXTENSIONS = {
1954
1991
  continue;
1955
1992
  }
1956
1993
  const sectionName = (_input_sectionNames_slot_sectionIndex = input.sectionNames[slot.sectionIndex]) != null ? _input_sectionNames_slot_sectionIndex : '';
1957
- const subject = aiStockSubjectWords(slot.alt, sectionName);
1994
+ const subject = english ? '' : aiStockSubjectWords(slot.alt, sectionName);
1958
1995
  let choice = null;
1959
1996
  const requests = [
1960
1997
  ...slot.product ? aiStockProductSearches(slot, terms.craft, terms.domain, {