@aglyn/plugins-ai 1.0.0-beta.264 → 1.0.0-beta.266

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 (98) hide show
  1. package/package.json +17 -17
  2. package/src/lib/assets/site-styles/beauty.webp +0 -0
  3. package/src/lib/assets/site-styles/blog.webp +0 -0
  4. package/src/lib/assets/site-styles/business.webp +0 -0
  5. package/src/lib/assets/site-styles/coming-soon.webp +0 -0
  6. package/src/lib/assets/site-styles/education.webp +0 -0
  7. package/src/lib/assets/site-styles/events.webp +0 -0
  8. package/src/lib/assets/site-styles/fitness.webp +0 -0
  9. package/src/lib/assets/site-styles/landing.webp +0 -0
  10. package/src/lib/assets/site-styles/music.webp +0 -0
  11. package/src/lib/assets/site-styles/nonprofit.webp +0 -0
  12. package/src/lib/assets/site-styles/personal.webp +0 -0
  13. package/src/lib/assets/site-styles/photography.webp +0 -0
  14. package/src/lib/assets/site-styles/portfolio.webp +0 -0
  15. package/src/lib/assets/site-styles/professional.webp +0 -0
  16. package/src/lib/assets/site-styles/realestate.webp +0 -0
  17. package/src/lib/assets/site-styles/restaurant.webp +0 -0
  18. package/src/lib/assets/site-styles/store.webp +0 -0
  19. package/src/lib/assets/site-styles/studio.webp +0 -0
  20. package/src/lib/assets/site-styles/trades.webp +0 -0
  21. package/src/lib/assets/site-styles/wellness.webp +0 -0
  22. package/src/lib/assets/site-styles/yoga.webp +0 -0
  23. package/src/lib/components/ai-site-start-card.component.d.ts +12 -0
  24. package/src/lib/components/ai-site-start-card.component.js +256 -236
  25. package/src/lib/components/ai-site-start-card.component.js.map +1 -1
  26. package/src/lib/components/ai-site-start-steps.component.d.ts +108 -0
  27. package/src/lib/components/ai-site-start-steps.component.js +451 -0
  28. package/src/lib/components/ai-site-start-steps.component.js.map +1 -0
  29. package/src/lib/components/ai-site-start-tracking.d.ts +114 -0
  30. package/src/lib/components/ai-site-start-tracking.js +277 -0
  31. package/src/lib/components/ai-site-start-tracking.js.map +1 -0
  32. package/src/lib/components/ai-site-style-previews.d.ts +26 -0
  33. package/src/lib/components/ai-site-style-previews.js +115 -0
  34. package/src/lib/components/ai-site-style-previews.js.map +1 -0
  35. package/src/lib/insights/ai-insight-digest.d.ts +9 -0
  36. package/src/lib/insights/ai-insight-digest.js +35 -11
  37. package/src/lib/insights/ai-insight-digest.js.map +1 -1
  38. package/src/lib/jobs/ai-job-page-language.d.ts +9 -0
  39. package/src/lib/jobs/ai-job-page-language.js +20 -2
  40. package/src/lib/jobs/ai-job-page-language.js.map +1 -1
  41. package/src/lib/jobs/ai-job-plan-step.d.ts +43 -8
  42. package/src/lib/jobs/ai-job-plan-step.js +99 -18
  43. package/src/lib/jobs/ai-job-plan-step.js.map +1 -1
  44. package/src/lib/jobs/ai-job-site-datasets.d.ts +82 -1
  45. package/src/lib/jobs/ai-job-site-datasets.js +276 -14
  46. package/src/lib/jobs/ai-job-site-datasets.js.map +1 -1
  47. package/src/lib/jobs/ai-layout-stock-photos.d.ts +108 -10
  48. package/src/lib/jobs/ai-layout-stock-photos.js +729 -87
  49. package/src/lib/jobs/ai-layout-stock-photos.js.map +1 -1
  50. package/src/lib/jobs/fixtures/ai-site-foreign-datasets-recording.d.ts +58 -0
  51. package/src/lib/jobs/fixtures/ai-site-foreign-datasets-recording.js +678 -0
  52. package/src/lib/jobs/fixtures/ai-site-foreign-datasets-recording.js.map +1 -0
  53. package/src/lib/jobs/fixtures/ai-stock-photo-agl3856-beta265-recordings.d.ts +33 -0
  54. package/src/lib/jobs/fixtures/ai-stock-photo-agl3856-beta265-recordings.js +270 -0
  55. package/src/lib/jobs/fixtures/ai-stock-photo-agl3856-beta265-recordings.js.map +1 -0
  56. package/src/lib/jobs/fixtures/ai-stock-photo-agl3856-people-recordings.d.ts +33 -0
  57. package/src/lib/jobs/fixtures/ai-stock-photo-agl3856-people-recordings.js +277 -0
  58. package/src/lib/jobs/fixtures/ai-stock-photo-agl3856-people-recordings.js.map +1 -0
  59. package/src/lib/layout-language/ai-layout-compiler.js +49 -12
  60. package/src/lib/layout-language/ai-layout-compiler.js.map +1 -1
  61. package/src/lib/layout-language/ai-layout-design.d.ts +6 -3
  62. package/src/lib/layout-language/ai-layout-design.js +14 -13
  63. package/src/lib/layout-language/ai-layout-design.js.map +1 -1
  64. package/src/lib/layout-language/ai-layout-listings.d.ts +48 -0
  65. package/src/lib/layout-language/ai-layout-listings.js +91 -5
  66. package/src/lib/layout-language/ai-layout-listings.js.map +1 -1
  67. package/src/lib/layout-language/ai-layout-pictures.d.ts +15 -0
  68. package/src/lib/layout-language/ai-layout-pictures.js +6 -2
  69. package/src/lib/layout-language/ai-layout-pictures.js.map +1 -1
  70. package/src/lib/model/ai-site-home-arcs.d.ts +75 -0
  71. package/src/lib/model/ai-site-home-arcs.js +741 -0
  72. package/src/lib/model/ai-site-home-arcs.js.map +1 -0
  73. package/src/lib/model/ai-site-inventory.d.ts +18 -0
  74. package/src/lib/model/ai-site-inventory.js.map +1 -1
  75. package/src/lib/model/ai-site-job.d.ts +9 -6
  76. package/src/lib/model/ai-site-job.js +8 -5
  77. package/src/lib/model/ai-site-job.js.map +1 -1
  78. package/src/lib/model/ai-site-kinds.js +24 -24
  79. package/src/lib/model/ai-site-kinds.js.map +1 -1
  80. package/src/lib/model/ai-site-start-steps.d.ts +67 -0
  81. package/src/lib/model/ai-site-start-steps.js +127 -0
  82. package/src/lib/model/ai-site-start-steps.js.map +1 -0
  83. package/src/lib/model/ai-site-start.js +4 -1
  84. package/src/lib/model/ai-site-start.js.map +1 -1
  85. package/src/lib/runtime/ai-doctrine-validators.d.ts +32 -0
  86. package/src/lib/runtime/ai-doctrine-validators.js +119 -2
  87. package/src/lib/runtime/ai-doctrine-validators.js.map +1 -1
  88. package/src/lib/runtime/ai-doctrine.d.ts +6 -1
  89. package/src/lib/runtime/ai-doctrine.js +9 -5
  90. package/src/lib/runtime/ai-doctrine.js.map +1 -1
  91. package/src/lib/runtime/ai-palette.generated.js +5 -2
  92. package/src/lib/runtime/ai-palette.generated.js.map +1 -1
  93. package/src/lib/runtime/site-inventory.js +6 -0
  94. package/src/lib/runtime/site-inventory.js.map +1 -1
  95. package/src/lib/server/ai-insight-digest-route.js +2 -2
  96. package/src/lib/server/ai-insight-digest-route.js.map +1 -1
  97. package/src/lib/usage/assist-free-taste.js +3 -0
  98. package/src/lib/usage/assist-free-taste.js.map +1 -1
@@ -0,0 +1,678 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */ /**
17
+ * RECORDED, NOT GOLDEN (AGL-3912): two guided starts on production beta.264,
18
+ * read back from Firestore on 2026-10-17 in the platform's own test workspace.
19
+ * Each plan reused datasets the workspace's earlier test sites had filled,
20
+ * and both of those sites had since been deleted.
21
+ *
22
+ * - ironwood-barbell-gym (job YUICpDdidL, site 8hxAi89hyE) reused "Session
23
+ * packages" (a deleted photographer's wedding packages), "Coaches" (a
24
+ * deleted strength studio's coaches, one bio naming that studio, every
25
+ * photo in that site's library) and "Gym FAQs" (the same studio's), and
26
+ * "Gym contact leads", empty, for its form.
27
+ * - silver-fir-film-portrait (job 0XoEWZteOn, site _lgryxv-Nv) reused
28
+ * "Gallery sessions", whose six covers are in a deleted photographer's
29
+ * library, and "Photography inquiries", empty, for its form.
30
+ *
31
+ * The plans' reuse, creations and sections are as kept, less the draft ids
32
+ * the job minted; their pages' layouts, search titles and descriptions are
33
+ * stand-ins, and silver-fir's About and Contact pages, which list no
34
+ * dataset, are left out. The datasets are as the site inventory reads them
35
+ * (`readIndexedDatasets`): the data plugin keeps no site on a dataset or a
36
+ * record — each is `visibleTo: ['org']` — so nothing in them says which site
37
+ * they were written for. The records keep only the values a spec reads, the
38
+ * photo addresses verbatim.
39
+ */ /** The deleted strength studio whose library the coaches' photos were in. */ export const AI_FOREIGN_COACHES_SITE = 'MEo5ZeWQB2';
40
+ /** The deleted photographer whose library the gallery's covers were in. */ export const AI_FOREIGN_GALLERY_SITE = 'nVj_-hl115';
41
+ export const AI_IRONWOOD_SITE = '8hxAi89hyE';
42
+ export const AI_SILVER_FIR_SITE = '_lgryxv-Nv';
43
+ /** The workspace datasets both sites saw, with the records each held on 2026-10-17. */ export const AI_FOREIGN_DATASETS_INVENTORY = [
44
+ {
45
+ id: '4DCiNNbwjK',
46
+ name: 'Session packages',
47
+ fields: [
48
+ 'Name',
49
+ 'Type',
50
+ 'Description',
51
+ 'Duration',
52
+ 'Includes'
53
+ ],
54
+ fieldIds: [
55
+ 'name',
56
+ 'type',
57
+ 'description',
58
+ 'duration',
59
+ 'includes'
60
+ ],
61
+ records: 5
62
+ },
63
+ {
64
+ id: 'BvgMhWY9Nz',
65
+ name: 'Coaches',
66
+ fields: [
67
+ 'Name',
68
+ 'Role',
69
+ 'Specialty',
70
+ 'Bio',
71
+ 'Certifications',
72
+ 'Image'
73
+ ],
74
+ fieldIds: [
75
+ 'name',
76
+ 'role',
77
+ 'specialty',
78
+ 'bio',
79
+ 'certifications',
80
+ 'image'
81
+ ],
82
+ imageField: 'image',
83
+ records: 4
84
+ },
85
+ {
86
+ id: 'BAdfabo_W9',
87
+ name: 'Gym FAQs',
88
+ fields: [
89
+ 'Question',
90
+ 'Answer',
91
+ 'Category'
92
+ ],
93
+ fieldIds: [
94
+ 'question',
95
+ 'answer',
96
+ 'category'
97
+ ],
98
+ records: 8
99
+ },
100
+ {
101
+ id: 'uKk5agxIcM',
102
+ name: 'Gym contact leads',
103
+ fields: [
104
+ 'Name',
105
+ 'Email',
106
+ 'Phone',
107
+ 'Interested in',
108
+ 'Lifting experience',
109
+ 'Goals or injuries to know about',
110
+ 'Best time to reach you',
111
+ 'Consent'
112
+ ],
113
+ fieldIds: [
114
+ 'name',
115
+ 'email',
116
+ 'phone',
117
+ 'interested_in',
118
+ 'lifting_experience',
119
+ 'goals_or_injuries_to_know_about',
120
+ 'best_time_to_reach_you',
121
+ 'consent'
122
+ ],
123
+ records: 0
124
+ },
125
+ {
126
+ id: 'h2CARlHhYY',
127
+ name: 'Gallery sessions',
128
+ fields: [
129
+ 'Title',
130
+ 'Category',
131
+ 'Location',
132
+ 'Description',
133
+ 'Camera type',
134
+ 'Image'
135
+ ],
136
+ fieldIds: [
137
+ 'title',
138
+ 'category',
139
+ 'location',
140
+ 'description',
141
+ 'camera_type',
142
+ 'image'
143
+ ],
144
+ imageField: 'image',
145
+ records: 6
146
+ },
147
+ {
148
+ id: 'v96W19iBEM',
149
+ name: 'Photography inquiries',
150
+ fields: [
151
+ 'Name',
152
+ 'Email',
153
+ 'Phone',
154
+ 'I am planning',
155
+ 'Event date',
156
+ 'Location or venue',
157
+ 'Guest count',
158
+ 'Film or digital preference',
159
+ 'How did you hear about us',
160
+ 'Message',
161
+ 'Consent'
162
+ ],
163
+ fieldIds: [
164
+ 'name',
165
+ 'email',
166
+ 'phone',
167
+ 'i_am_planning',
168
+ 'event_date',
169
+ 'location_or_venue',
170
+ 'guest_count',
171
+ 'film_or_digital_preference',
172
+ 'how_did_you_hear_about_us',
173
+ 'message',
174
+ 'consent'
175
+ ],
176
+ records: 0
177
+ }
178
+ ];
179
+ /** The coaches' records, as the gym's pages listed them. */ export const AI_FOREIGN_COACH_RECORDS = [
180
+ {
181
+ $id: 'JQiYgdRgOu',
182
+ name: 'Open gym coach',
183
+ role: 'Open gym coach',
184
+ image: '/api/media/cdn/MEo5ZeWQB2/fdgCu-U42k'
185
+ },
186
+ {
187
+ $id: 'Jqg4jZBmq_',
188
+ name: 'Small-group class coach',
189
+ role: 'Small-group class coach',
190
+ image: '/api/media/cdn/MEo5ZeWQB2/Q6QBtQkFUs'
191
+ },
192
+ {
193
+ $id: 'P9vy8p2NM8',
194
+ name: 'Head coach',
195
+ role: 'Head coach',
196
+ bio: 'Leads coaching at Ironline Strength Studio and shapes how classes and programs are run. Focused on helping busy Austin adults get strong safely.',
197
+ image: '/api/media/cdn/MEo5ZeWQB2/wSWoP1kjUG'
198
+ },
199
+ {
200
+ $id: 'd8r6PFhWw6',
201
+ name: 'Barbell coach',
202
+ role: 'Barbell coach',
203
+ image: '/api/media/cdn/MEo5ZeWQB2/7Sf-fC_y_e'
204
+ }
205
+ ];
206
+ /** The gallery's records, as the photographer's home and galleries pages listed them. */ export const AI_FOREIGN_GALLERY_RECORDS = [
207
+ {
208
+ $id: '5jiszknObR',
209
+ title: 'Ridgetop Elopement',
210
+ category: 'Elopement',
211
+ image: '/api/media/cdn/nVj_-hl115/RM4pCuwtcQ'
212
+ },
213
+ {
214
+ $id: 'CcW0e8hBdK',
215
+ title: 'Family Session in the Fall',
216
+ category: 'Family portrait',
217
+ image: '/api/media/cdn/nVj_-hl115/e3BdfPAEHe'
218
+ },
219
+ {
220
+ $id: 'FHRgCSO-jk',
221
+ title: 'Intimate Forest Ceremony',
222
+ category: 'Elopement',
223
+ image: '/api/media/cdn/nVj_-hl115/c1cu6ECRrR'
224
+ },
225
+ {
226
+ $id: 'RRR6ZGZHLK',
227
+ title: 'Mountain Wedding Day',
228
+ category: 'Wedding',
229
+ image: '/api/media/cdn/nVj_-hl115/o18r7M8gjv'
230
+ },
231
+ {
232
+ $id: 'i4LjphUlXx',
233
+ title: 'Generations Portrait Session',
234
+ category: 'Family portrait',
235
+ image: '/api/media/cdn/nVj_-hl115/xM_bbg5H2L'
236
+ },
237
+ {
238
+ $id: 'n-mS4OTVUW',
239
+ title: 'Golden Hour Engagement',
240
+ category: 'Engagement',
241
+ image: '/api/media/cdn/nVj_-hl115/6tbRI25Wy2'
242
+ }
243
+ ];
244
+ /** ironwood-barbell-gym's plan, job YUICpDdidL. */ export const AI_IRONWOOD_SITE_PLAN = {
245
+ reuse: [
246
+ {
247
+ kind: 'dataset',
248
+ id: '4DCiNNbwjK',
249
+ purpose: 'Lists session packages on Services and Home'
250
+ },
251
+ {
252
+ kind: 'dataset',
253
+ id: 'BvgMhWY9Nz',
254
+ purpose: 'Lists coaches on About'
255
+ },
256
+ {
257
+ kind: 'dataset',
258
+ id: 'BAdfabo_W9',
259
+ purpose: 'Lists gym FAQs on Contact'
260
+ },
261
+ {
262
+ kind: 'dataset',
263
+ id: 'uKk5agxIcM',
264
+ purpose: 'Stores contact form submissions as leads'
265
+ },
266
+ {
267
+ kind: 'theme',
268
+ id: 'theme',
269
+ purpose: 'Brand palette and Plus Jakarta Sans typography'
270
+ }
271
+ ],
272
+ create: [
273
+ {
274
+ kind: 'layout',
275
+ name: 'Ironwood site layout',
276
+ why: 'The site has no layout; every page needs a shared header, navigation and footer.',
277
+ duplicateOf: null,
278
+ fields: [
279
+ 'header',
280
+ 'nav',
281
+ 'main',
282
+ 'footer'
283
+ ]
284
+ },
285
+ {
286
+ kind: 'form',
287
+ name: 'Gym contact form',
288
+ why: 'The site has no saved form; visitors need to ask to be contacted by the gym.',
289
+ duplicateOf: null,
290
+ fields: [
291
+ 'Name',
292
+ 'Email',
293
+ 'Phone',
294
+ 'Interested in',
295
+ 'Lifting experience',
296
+ 'Goals or injuries to know about',
297
+ 'Best time to reach you',
298
+ 'Consent'
299
+ ],
300
+ writesTo: 'uKk5agxIcM'
301
+ }
302
+ ],
303
+ screens: [
304
+ {
305
+ title: 'Home',
306
+ slug: '/',
307
+ layout: 'new:Ironwood site layout',
308
+ template: null,
309
+ duplicateOf: null,
310
+ nav: true,
311
+ seoTitle: 'Ironwood Barbell Gym',
312
+ seoDescription: 'Barbell coaching and small-group strength classes.',
313
+ record: null,
314
+ sections: [
315
+ {
316
+ name: 'Hero with call to action',
317
+ uses: [],
318
+ items: 0
319
+ },
320
+ {
321
+ name: 'What we offer',
322
+ uses: [
323
+ '4DCiNNbwjK'
324
+ ],
325
+ items: 4
326
+ },
327
+ {
328
+ name: 'Why Ironwood Barbell Gym',
329
+ uses: [],
330
+ items: 3
331
+ },
332
+ {
333
+ name: 'Meet the coaches',
334
+ uses: [
335
+ 'BvgMhWY9Nz'
336
+ ],
337
+ items: 4
338
+ },
339
+ {
340
+ name: 'What getting started is like',
341
+ uses: [],
342
+ items: 4
343
+ },
344
+ {
345
+ name: 'Closing contact band',
346
+ uses: [
347
+ 'new:Gym contact form'
348
+ ],
349
+ items: 0
350
+ }
351
+ ]
352
+ },
353
+ {
354
+ title: 'Services',
355
+ slug: '/services',
356
+ layout: 'new:Ironwood site layout',
357
+ template: null,
358
+ duplicateOf: null,
359
+ nav: true,
360
+ seoTitle: 'Services',
361
+ seoDescription: 'Session packages at Ironwood Barbell Gym.',
362
+ record: null,
363
+ sections: [
364
+ {
365
+ name: 'Services intro',
366
+ uses: [],
367
+ items: 0
368
+ },
369
+ {
370
+ name: 'Session packages list',
371
+ uses: [
372
+ '4DCiNNbwjK'
373
+ ],
374
+ items: 4
375
+ },
376
+ {
377
+ name: 'Who each package suits',
378
+ uses: [],
379
+ items: 3
380
+ },
381
+ {
382
+ name: 'How a session works',
383
+ uses: [],
384
+ items: 4
385
+ },
386
+ {
387
+ name: 'Book a visit call to action',
388
+ uses: [
389
+ 'new:Gym contact form'
390
+ ],
391
+ items: 0
392
+ }
393
+ ]
394
+ },
395
+ {
396
+ title: 'About',
397
+ slug: '/about',
398
+ layout: 'new:Ironwood site layout',
399
+ template: null,
400
+ duplicateOf: null,
401
+ nav: true,
402
+ seoTitle: 'About',
403
+ seoDescription: 'The coaches and the gym floor at Ironwood Barbell Gym.',
404
+ record: null,
405
+ sections: [
406
+ {
407
+ name: 'About hero',
408
+ uses: [],
409
+ items: 0
410
+ },
411
+ {
412
+ name: 'Our story and values',
413
+ uses: [],
414
+ items: 3
415
+ },
416
+ {
417
+ name: 'Coaches',
418
+ uses: [
419
+ 'BvgMhWY9Nz'
420
+ ],
421
+ items: 4
422
+ },
423
+ {
424
+ name: 'The gym floor and equipment',
425
+ uses: [],
426
+ items: 4
427
+ },
428
+ {
429
+ name: 'Join us call to action',
430
+ uses: [],
431
+ items: 0
432
+ }
433
+ ]
434
+ },
435
+ {
436
+ title: 'Contact',
437
+ slug: '/contact',
438
+ layout: 'new:Ironwood site layout',
439
+ template: null,
440
+ duplicateOf: null,
441
+ nav: true,
442
+ seoTitle: 'Contact',
443
+ seoDescription: 'Ask Ironwood Barbell Gym about a first visit.',
444
+ record: null,
445
+ sections: [
446
+ {
447
+ name: 'Contact intro',
448
+ uses: [],
449
+ items: 0
450
+ },
451
+ {
452
+ name: 'Contact form',
453
+ uses: [
454
+ 'new:Gym contact form'
455
+ ],
456
+ items: 0
457
+ },
458
+ {
459
+ name: 'Gym details and hours',
460
+ uses: [],
461
+ items: 3
462
+ },
463
+ {
464
+ name: 'Frequently asked questions',
465
+ uses: [
466
+ 'BAdfabo_W9'
467
+ ],
468
+ items: 6
469
+ }
470
+ ]
471
+ }
472
+ ]
473
+ };
474
+ /** silver-fir-film-portrait's plan, job 0XoEWZteOn. */ export const AI_SILVER_FIR_SITE_PLAN = {
475
+ reuse: [
476
+ {
477
+ kind: 'dataset',
478
+ id: 'h2CARlHhYY',
479
+ purpose: 'Gallery pieces listed on home and galleries pages'
480
+ },
481
+ {
482
+ kind: 'dataset',
483
+ id: 'v96W19iBEM',
484
+ purpose: 'Stores each contact form submission as an inquiry record'
485
+ },
486
+ {
487
+ kind: 'theme',
488
+ id: 'theme',
489
+ purpose: 'Brand palette and Plus Jakarta Sans typography'
490
+ }
491
+ ],
492
+ create: [
493
+ {
494
+ kind: 'layout',
495
+ name: 'Site layout',
496
+ why: 'The site has no layout; header, navigation and footer must live in one shared layout.',
497
+ duplicateOf: null,
498
+ fields: [
499
+ 'header',
500
+ 'nav',
501
+ 'main',
502
+ 'footer'
503
+ ]
504
+ },
505
+ {
506
+ kind: 'form',
507
+ name: 'Contact form',
508
+ why: 'The site has no saved form; visitors need to ask to be contacted about weddings and portrait sessions.',
509
+ duplicateOf: null,
510
+ fields: [
511
+ 'Name',
512
+ 'Email',
513
+ 'Phone',
514
+ 'I am planning',
515
+ 'Event date',
516
+ 'Location or venue',
517
+ 'Guest count',
518
+ 'Film or digital preference',
519
+ 'How did you hear about us',
520
+ 'Message',
521
+ 'Consent'
522
+ ],
523
+ writesTo: 'v96W19iBEM'
524
+ },
525
+ {
526
+ kind: 'dataset',
527
+ name: 'Photography packages',
528
+ why: 'No existing dataset lists wedding, elopement and portrait packages for this photographer.',
529
+ duplicateOf: null,
530
+ fields: [
531
+ 'Name',
532
+ 'Type',
533
+ 'Description',
534
+ 'Duration',
535
+ 'Includes'
536
+ ]
537
+ },
538
+ {
539
+ kind: 'dataset',
540
+ name: 'Photography FAQs',
541
+ why: 'No existing dataset holds questions and answers about booking, film and mountain locations.',
542
+ duplicateOf: null,
543
+ fields: [
544
+ 'Question',
545
+ 'Answer',
546
+ 'Category'
547
+ ]
548
+ }
549
+ ],
550
+ screens: [
551
+ {
552
+ title: 'Home',
553
+ slug: '/',
554
+ layout: 'new:Site layout',
555
+ template: null,
556
+ duplicateOf: null,
557
+ nav: true,
558
+ seoTitle: 'Silver Fir Film & Portrait',
559
+ seoDescription: 'Wedding, elopement and portrait photography in the Blue Ridge.',
560
+ record: null,
561
+ sections: [
562
+ {
563
+ name: 'Hero with book a session call to action',
564
+ uses: [],
565
+ items: 0
566
+ },
567
+ {
568
+ name: 'Selected work gallery',
569
+ uses: [
570
+ 'h2CARlHhYY'
571
+ ],
572
+ items: 6
573
+ },
574
+ {
575
+ name: 'Services: weddings, elopements, portraits',
576
+ uses: [],
577
+ items: 3
578
+ },
579
+ {
580
+ name: 'About the photographer',
581
+ uses: [],
582
+ items: 0
583
+ },
584
+ {
585
+ name: 'Film and digital approach',
586
+ uses: [],
587
+ items: 0
588
+ },
589
+ {
590
+ name: 'What working together is like',
591
+ uses: [],
592
+ items: 4
593
+ },
594
+ {
595
+ name: 'Closing contact band with form',
596
+ uses: [
597
+ 'new:Contact form'
598
+ ],
599
+ items: 0
600
+ }
601
+ ]
602
+ },
603
+ {
604
+ title: 'Galleries',
605
+ slug: '/galleries',
606
+ layout: 'new:Site layout',
607
+ template: null,
608
+ duplicateOf: null,
609
+ nav: true,
610
+ seoTitle: 'Galleries',
611
+ seoDescription: 'Weddings, elopements and portraits.',
612
+ record: null,
613
+ sections: [
614
+ {
615
+ name: 'Galleries intro',
616
+ uses: [],
617
+ items: 0
618
+ },
619
+ {
620
+ name: 'Gallery by category',
621
+ uses: [
622
+ 'h2CARlHhYY'
623
+ ],
624
+ items: 6
625
+ },
626
+ {
627
+ name: 'Film versus digital note',
628
+ uses: [],
629
+ items: 0
630
+ },
631
+ {
632
+ name: 'Call to action to book',
633
+ uses: [],
634
+ items: 0
635
+ }
636
+ ]
637
+ },
638
+ {
639
+ title: 'Packages',
640
+ slug: '/packages',
641
+ layout: 'new:Site layout',
642
+ template: null,
643
+ duplicateOf: null,
644
+ nav: true,
645
+ seoTitle: 'Packages',
646
+ seoDescription: 'Wedding, elopement and portrait packages.',
647
+ record: null,
648
+ sections: [
649
+ {
650
+ name: 'Packages intro',
651
+ uses: [],
652
+ items: 0
653
+ },
654
+ {
655
+ name: 'Package list',
656
+ uses: [
657
+ 'new:Photography packages'
658
+ ],
659
+ items: 5
660
+ },
661
+ {
662
+ name: 'Questions and answers',
663
+ uses: [
664
+ 'new:Photography FAQs'
665
+ ],
666
+ items: 6
667
+ },
668
+ {
669
+ name: 'Call to action to inquire',
670
+ uses: [],
671
+ items: 0
672
+ }
673
+ ]
674
+ }
675
+ ]
676
+ };
677
+
678
+ //# sourceMappingURL=ai-site-foreign-datasets-recording.js.map