@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.
- package/package.json +17 -17
- package/src/lib/assets/site-styles/nonprofit.webp +0 -0
- package/src/lib/assets/site-styles/professional.webp +0 -0
- package/src/lib/assets/site-styles/store.webp +0 -0
- package/src/lib/assets/site-styles/trades.webp +0 -0
- package/src/lib/components/ai-theme-proposal-card.component.js +12 -3
- package/src/lib/components/ai-theme-proposal-card.component.js.map +1 -1
- package/src/lib/declarations.js +5 -2
- package/src/lib/declarations.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.d.ts +3 -1
- package/src/lib/jobs/ai-build-capabilities.js +27 -2
- package/src/lib/jobs/ai-build-capabilities.js.map +1 -1
- package/src/lib/jobs/ai-business-profile-prefill.js +6 -3
- package/src/lib/jobs/ai-business-profile-prefill.js.map +1 -1
- package/src/lib/jobs/ai-image-reads.d.ts +59 -0
- package/src/lib/jobs/ai-image-reads.js +138 -0
- package/src/lib/jobs/ai-image-reads.js.map +1 -0
- package/src/lib/jobs/ai-job-build-step.d.ts +29 -0
- package/src/lib/jobs/ai-job-build-step.js +83 -12
- package/src/lib/jobs/ai-job-build-step.js.map +1 -1
- package/src/lib/jobs/ai-job-duplicate-step.d.ts +2 -1
- package/src/lib/jobs/ai-job-duplicate-step.js +6 -6
- package/src/lib/jobs/ai-job-duplicate-step.js.map +1 -1
- package/src/lib/jobs/ai-job-import-step.d.ts +4 -2
- package/src/lib/jobs/ai-job-import-step.js +15 -11
- package/src/lib/jobs/ai-job-import-step.js.map +1 -1
- package/src/lib/jobs/ai-job-insight-step.d.ts +10 -0
- package/src/lib/jobs/ai-job-insight-step.js +23 -5
- package/src/lib/jobs/ai-job-insight-step.js.map +1 -1
- package/src/lib/jobs/ai-job-layout-language.js +2 -1
- package/src/lib/jobs/ai-job-layout-language.js.map +1 -1
- package/src/lib/jobs/ai-job-media-step.d.ts +2 -1
- package/src/lib/jobs/ai-job-media-step.js +6 -8
- package/src/lib/jobs/ai-job-media-step.js.map +1 -1
- package/src/lib/jobs/ai-job-navigation-step.d.ts +2 -1
- package/src/lib/jobs/ai-job-navigation-step.js +7 -9
- package/src/lib/jobs/ai-job-navigation-step.js.map +1 -1
- package/src/lib/jobs/ai-job-page-language.js +7 -1
- package/src/lib/jobs/ai-job-page-language.js.map +1 -1
- package/src/lib/jobs/ai-job-page-sections.js +16 -3
- package/src/lib/jobs/ai-job-page-sections.js.map +1 -1
- package/src/lib/jobs/ai-job-page-step.js +9 -1
- package/src/lib/jobs/ai-job-page-step.js.map +1 -1
- package/src/lib/jobs/ai-job-plan-step.d.ts +30 -8
- package/src/lib/jobs/ai-job-plan-step.js +78 -13
- package/src/lib/jobs/ai-job-plan-step.js.map +1 -1
- package/src/lib/jobs/ai-job-privacy-step.d.ts +4 -2
- package/src/lib/jobs/ai-job-privacy-step.js +14 -15
- package/src/lib/jobs/ai-job-privacy-step.js.map +1 -1
- package/src/lib/jobs/ai-job-products-step.js +5 -3
- package/src/lib/jobs/ai-job-products-step.js.map +1 -1
- package/src/lib/jobs/ai-job-settings-step.d.ts +2 -1
- package/src/lib/jobs/ai-job-settings-step.js +7 -8
- package/src/lib/jobs/ai-job-settings-step.js.map +1 -1
- package/src/lib/jobs/ai-job-site-content.d.ts +34 -1
- package/src/lib/jobs/ai-job-site-content.js +67 -8
- package/src/lib/jobs/ai-job-site-content.js.map +1 -1
- package/src/lib/jobs/ai-job-site-datasets.d.ts +53 -3
- package/src/lib/jobs/ai-job-site-datasets.js +300 -30
- package/src/lib/jobs/ai-job-site-datasets.js.map +1 -1
- package/src/lib/jobs/ai-job-site-step.js +6 -3
- package/src/lib/jobs/ai-job-site-step.js.map +1 -1
- package/src/lib/jobs/ai-job-site-store-pages.js +3 -3
- package/src/lib/jobs/ai-job-site-store-pages.js.map +1 -1
- package/src/lib/jobs/ai-job-text-step.js +2 -1
- package/src/lib/jobs/ai-job-text-step.js.map +1 -1
- package/src/lib/jobs/ai-job-tracking-step.d.ts +2 -1
- package/src/lib/jobs/ai-job-tracking-step.js +7 -8
- package/src/lib/jobs/ai-job-tracking-step.js.map +1 -1
- package/src/lib/jobs/ai-jobs-beat.d.ts +11 -7
- package/src/lib/jobs/ai-jobs-beat.js +18 -8
- package/src/lib/jobs/ai-jobs-beat.js.map +1 -1
- package/src/lib/jobs/ai-jobs-notify.d.ts +66 -1
- package/src/lib/jobs/ai-jobs-notify.js +136 -3
- package/src/lib/jobs/ai-jobs-notify.js.map +1 -1
- package/src/lib/jobs/ai-layout-stock-photos.d.ts +155 -7
- package/src/lib/jobs/ai-layout-stock-photos.js +1517 -220
- package/src/lib/jobs/ai-layout-stock-photos.js.map +1 -1
- package/src/lib/jobs/ai-product-image.d.ts +14 -0
- package/src/lib/jobs/ai-product-image.js +73 -21
- package/src/lib/jobs/ai-product-image.js.map +1 -1
- package/src/lib/jobs/ai-theme-brand-inputs.d.ts +9 -1
- package/src/lib/jobs/ai-theme-brand-inputs.js +28 -2
- package/src/lib/jobs/ai-theme-brand-inputs.js.map +1 -1
- package/src/lib/jobs/fixtures/ai-site-agl4065-datasets.d.ts +175 -0
- package/src/lib/jobs/fixtures/ai-site-agl4065-datasets.js +601 -0
- package/src/lib/jobs/fixtures/ai-site-agl4065-datasets.js.map +1 -0
- package/src/lib/jobs/fixtures/ai-site-agl4065-pages.d.ts +46 -0
- package/src/lib/jobs/fixtures/ai-site-agl4065-pages.js +2862 -0
- package/src/lib/jobs/fixtures/ai-site-agl4065-pages.js.map +1 -0
- package/src/lib/jobs/fixtures/ai-site-agl4065-plans.d.ts +74 -0
- package/src/lib/jobs/fixtures/ai-site-agl4065-plans.js +888 -0
- package/src/lib/jobs/fixtures/ai-site-agl4065-plans.js.map +1 -0
- package/src/lib/jobs/fixtures/ai-site-agl4092-datasets.d.ts +120 -0
- package/src/lib/jobs/fixtures/ai-site-agl4092-datasets.js +410 -0
- package/src/lib/jobs/fixtures/ai-site-agl4092-datasets.js.map +1 -0
- package/src/lib/jobs/fixtures/ai-stock-photo-agl4065-judge.d.ts +29 -0
- package/src/lib/jobs/fixtures/ai-stock-photo-agl4065-judge.js +81 -0
- package/src/lib/jobs/fixtures/ai-stock-photo-agl4065-judge.js.map +1 -0
- package/src/lib/jobs/fixtures/ai-stock-photo-agl4065-recordings.d.ts +87 -0
- package/src/lib/jobs/fixtures/ai-stock-photo-agl4065-recordings.js +225 -0
- package/src/lib/jobs/fixtures/ai-stock-photo-agl4065-recordings.js.map +1 -0
- package/src/lib/jobs/fixtures/ai-stock-photo-agl4092-recordings.d.ts +26 -0
- package/src/lib/jobs/fixtures/ai-stock-photo-agl4092-recordings.js +714 -0
- package/src/lib/jobs/fixtures/ai-stock-photo-agl4092-recordings.js.map +1 -0
- package/src/lib/layout-language/ai-layout-compiler.d.ts +11 -0
- package/src/lib/layout-language/ai-layout-compiler.js +194 -18
- package/src/lib/layout-language/ai-layout-compiler.js.map +1 -1
- package/src/lib/layout-language/ai-layout-copy.d.ts +37 -0
- package/src/lib/layout-language/ai-layout-copy.js +383 -3
- package/src/lib/layout-language/ai-layout-copy.js.map +1 -1
- package/src/lib/layout-language/ai-layout-design.d.ts +19 -0
- package/src/lib/layout-language/ai-layout-design.js +31 -11
- package/src/lib/layout-language/ai-layout-design.js.map +1 -1
- package/src/lib/layout-language/ai-layout-listings.d.ts +7 -1
- package/src/lib/layout-language/ai-layout-listings.js +9 -1
- package/src/lib/layout-language/ai-layout-listings.js.map +1 -1
- package/src/lib/layout-language/ai-layout-pictures.d.ts +39 -1
- package/src/lib/layout-language/ai-layout-pictures.js +141 -4
- package/src/lib/layout-language/ai-layout-pictures.js.map +1 -1
- package/src/lib/layout-language/ai-layout-storefront.d.ts +18 -4
- package/src/lib/layout-language/ai-layout-storefront.js +100 -20
- package/src/lib/layout-language/ai-layout-storefront.js.map +1 -1
- package/src/lib/model/ai-build-job.d.ts +7 -0
- package/src/lib/model/ai-build-job.js +36 -7
- package/src/lib/model/ai-build-job.js.map +1 -1
- package/src/lib/model/ai-build-plan.d.ts +28 -4
- package/src/lib/model/ai-build-plan.js +49 -9
- package/src/lib/model/ai-build-plan.js.map +1 -1
- package/src/lib/model/ai-build-progress.js +3 -1
- package/src/lib/model/ai-build-progress.js.map +1 -1
- package/src/lib/model/ai-job-notice.d.ts +8 -0
- package/src/lib/model/ai-job-notice.js +33 -0
- package/src/lib/model/ai-job-notice.js.map +1 -1
- package/src/lib/model/ai-job-plan-lines.d.ts +2 -1
- package/src/lib/model/ai-job-plan-lines.js +6 -1
- package/src/lib/model/ai-job-plan-lines.js.map +1 -1
- package/src/lib/model/ai-jobs.types.d.ts +8 -0
- package/src/lib/model/ai-jobs.types.js.map +1 -1
- package/src/lib/model/ai-permissions.d.ts +13 -0
- package/src/lib/model/ai-permissions.js +29 -1
- package/src/lib/model/ai-permissions.js.map +1 -1
- package/src/lib/model/ai-plan-said-sections.d.ts +12 -3
- package/src/lib/model/ai-plan-said-sections.js +22 -5
- package/src/lib/model/ai-plan-said-sections.js.map +1 -1
- package/src/lib/model/ai-products.d.ts +18 -0
- package/src/lib/model/ai-products.js +32 -0
- package/src/lib/model/ai-products.js.map +1 -1
- package/src/lib/model/ai-site-context.d.ts +6 -2
- package/src/lib/model/ai-site-context.js +8 -2
- package/src/lib/model/ai-site-context.js.map +1 -1
- package/src/lib/model/ai-site-inspiration.d.ts +3 -2
- package/src/lib/model/ai-site-inspiration.js +3 -2
- package/src/lib/model/ai-site-inspiration.js.map +1 -1
- package/src/lib/plugin.js +4 -13
- package/src/lib/plugin.js.map +1 -1
- package/src/lib/providers/anthropic.js +9 -2
- package/src/lib/providers/anthropic.js.map +1 -1
- package/src/lib/providers/catalog.js +14 -5
- package/src/lib/providers/catalog.js.map +1 -1
- package/src/lib/providers/contract.d.ts +24 -1
- package/src/lib/providers/contract.js.map +1 -1
- package/src/lib/providers/routing.js +5 -2
- package/src/lib/providers/routing.js.map +1 -1
- package/src/lib/runtime/ai-dataset-generation.d.ts +120 -1
- package/src/lib/runtime/ai-dataset-generation.js +352 -3
- package/src/lib/runtime/ai-dataset-generation.js.map +1 -1
- package/src/lib/runtime/ai-dev-replay.d.ts +1 -0
- package/src/lib/runtime/ai-dev-replay.js +4 -2
- package/src/lib/runtime/ai-dev-replay.js.map +1 -1
- package/src/lib/runtime/ai-doctrine-validators.d.ts +47 -3
- package/src/lib/runtime/ai-doctrine-validators.js +345 -28
- package/src/lib/runtime/ai-doctrine-validators.js.map +1 -1
- package/src/lib/runtime/ai-doctrine.d.ts +5 -4
- package/src/lib/runtime/ai-doctrine.js +10 -3
- package/src/lib/runtime/ai-doctrine.js.map +1 -1
- package/src/lib/runtime/ai-icon-library.d.ts +27 -1
- package/src/lib/runtime/ai-icon-library.js +30 -3
- package/src/lib/runtime/ai-icon-library.js.map +1 -1
- package/src/lib/runtime/ai-products-generation.d.ts +11 -1
- package/src/lib/runtime/ai-products-generation.js +51 -4
- package/src/lib/runtime/ai-products-generation.js.map +1 -1
- package/src/lib/runtime/assist-answer-cache.d.ts +2 -0
- package/src/lib/runtime/assist-answer-cache.js +5 -2
- package/src/lib/runtime/assist-answer-cache.js.map +1 -1
- package/src/lib/server/ai-allotments.js +7 -2
- package/src/lib/server/ai-allotments.js.map +1 -1
- package/src/lib/server/ai-experiment-versions.js +5 -5
- package/src/lib/server/ai-experiment-versions.js.map +1 -1
- package/src/lib/server/ai-host-permissions-roster.d.ts +25 -0
- package/src/lib/server/ai-host-permissions-roster.js +33 -0
- package/src/lib/server/ai-host-permissions-roster.js.map +1 -0
- package/src/lib/server/ai-host-permissions.js +8 -6
- package/src/lib/server/ai-host-permissions.js.map +1 -1
- package/src/lib/server/ai-image-reads-route.d.ts +17 -0
- package/src/lib/server/ai-image-reads-route.js +106 -0
- package/src/lib/server/ai-image-reads-route.js.map +1 -0
- package/src/lib/server/ai-seo-apply.js +5 -5
- package/src/lib/server/ai-seo-apply.js.map +1 -1
- package/src/lib/server/ai-site-import-route.js +7 -4
- package/src/lib/server/ai-site-import-route.js.map +1 -1
- package/src/lib/server/assist-build.d.ts +15 -1
- package/src/lib/server/assist-build.js +30 -3
- package/src/lib/server/assist-build.js.map +1 -1
- package/src/lib/server/assist-chat.d.ts +11 -7
- package/src/lib/server/assist-chat.js +185 -48
- package/src/lib/server/assist-chat.js.map +1 -1
- package/src/lib/server/assist-docs-query.d.ts +51 -0
- package/src/lib/server/assist-docs-query.js +57 -0
- package/src/lib/server/assist-docs-query.js.map +1 -0
- package/src/lib/server/assist-jobs-context.d.ts +102 -0
- package/src/lib/server/assist-jobs-context.js +227 -0
- package/src/lib/server/assist-jobs-context.js.map +1 -0
- package/src/lib/server/assist-view-context.d.ts +8 -4
- package/src/lib/server/assist-view-context.js +12 -7
- package/src/lib/server/assist-view-context.js.map +1 -1
- package/src/lib/server.js +12 -0
- package/src/lib/server.js.map +1 -1
- package/src/lib/tools/ai-dataset-tool.d.ts +11 -1
- package/src/lib/tools/ai-dataset-tool.js +24 -7
- package/src/lib/tools/ai-dataset-tool.js.map +1 -1
- package/src/lib/tools/ai-duplicate-resource-tool.js +5 -6
- package/src/lib/tools/ai-duplicate-resource-tool.js.map +1 -1
- package/src/lib/components/ai-collaborator-permissions-column.component.d.ts +0 -32
- package/src/lib/components/ai-collaborator-permissions-column.component.js +0 -132
- package/src/lib/components/ai-collaborator-permissions-column.component.js.map +0 -1
|
@@ -0,0 +1,601 @@
|
|
|
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
|
+
*/ import { _ as _extends } from "@swc/helpers/_/_extends";
|
|
17
|
+
/**
|
|
18
|
+
* RECORDED, NOT GOLDEN (AGL-4065): what two of the 2026-10-25 booth-kit
|
|
19
|
+
* guided starts in the test workspace planned and answered, for the offline
|
|
20
|
+
* replays of Lane B. Both businesses are fictional. No contact detail,
|
|
21
|
+
* address, person, workspace or site id is kept: screen ids are this
|
|
22
|
+
* fixture's own.
|
|
23
|
+
*
|
|
24
|
+
* - RUT RUNNERS RACING, an amateur motocross team (`siteKind: fitness`): its
|
|
25
|
+
* plan's five pages and its "Race events" dataset. The job dump keeps only
|
|
26
|
+
* the dataset's record NAMES and which fields most records left empty
|
|
27
|
+
* (date, track, location, class, result: every one); the values beside the
|
|
28
|
+
* names are reconstructed from those, Status being "Upcoming" or "Past" as
|
|
29
|
+
* the names said.
|
|
30
|
+
* - BERM & BOLT MOTO PARTS, a dirt bike and ATV parts shop (`siteKind:
|
|
31
|
+
* store`): its inputs, its plan's five pages and its first products'
|
|
32
|
+
* names. The dump keeps the products' names only; the rest of each
|
|
33
|
+
* proposed product is reconstructed in the catalog tool's shape.
|
|
34
|
+
*/ /** The Rut Runners plan's "Race events" creation, as planned. */ export const RUT_RUNNERS_RACE_EVENTS = {
|
|
35
|
+
kind: 'dataset',
|
|
36
|
+
name: 'Race events',
|
|
37
|
+
why: 'The race schedule and results are a list of similar events that no listed dataset covers.',
|
|
38
|
+
duplicateOf: null,
|
|
39
|
+
fields: [
|
|
40
|
+
'Event',
|
|
41
|
+
'Date',
|
|
42
|
+
'Track',
|
|
43
|
+
'Location',
|
|
44
|
+
'Class',
|
|
45
|
+
'Result',
|
|
46
|
+
'Status'
|
|
47
|
+
],
|
|
48
|
+
id: 'fxRaceEvts'
|
|
49
|
+
};
|
|
50
|
+
/** The Rut Runners plan's "Riders" creation, as planned. */ export const RUT_RUNNERS_RIDERS = {
|
|
51
|
+
kind: 'dataset',
|
|
52
|
+
name: 'Riders',
|
|
53
|
+
why: 'Rider profiles are a list of 4 or more similar items and none of the listed datasets hold riders.',
|
|
54
|
+
duplicateOf: null,
|
|
55
|
+
fields: [
|
|
56
|
+
'Name',
|
|
57
|
+
'Age class',
|
|
58
|
+
'Bike number',
|
|
59
|
+
'Bike',
|
|
60
|
+
'Home town',
|
|
61
|
+
'Bio'
|
|
62
|
+
],
|
|
63
|
+
id: 'fxRiders01'
|
|
64
|
+
};
|
|
65
|
+
const page = (id, title, slug, sections)=>({
|
|
66
|
+
id,
|
|
67
|
+
title,
|
|
68
|
+
slug,
|
|
69
|
+
layout: 'new:Team site layout',
|
|
70
|
+
template: null,
|
|
71
|
+
duplicateOf: null,
|
|
72
|
+
nav: true,
|
|
73
|
+
seoTitle: title,
|
|
74
|
+
seoDescription: title,
|
|
75
|
+
record: null,
|
|
76
|
+
sections: sections.map(([name, uses, items])=>({
|
|
77
|
+
name,
|
|
78
|
+
uses,
|
|
79
|
+
items
|
|
80
|
+
}))
|
|
81
|
+
});
|
|
82
|
+
/** The Rut Runners plan's pages, as planned (titles, addresses and sections). */ export const RUT_RUNNERS_SCREENS = [
|
|
83
|
+
page('fxHome', 'Home', '/', [
|
|
84
|
+
[
|
|
85
|
+
'Hero: built in Lockhart, raced across Texas',
|
|
86
|
+
[],
|
|
87
|
+
0
|
|
88
|
+
],
|
|
89
|
+
[
|
|
90
|
+
'How to get started with the team',
|
|
91
|
+
[],
|
|
92
|
+
4
|
|
93
|
+
],
|
|
94
|
+
[
|
|
95
|
+
'Riders and programs',
|
|
96
|
+
[
|
|
97
|
+
'new:Riders'
|
|
98
|
+
],
|
|
99
|
+
4
|
|
100
|
+
],
|
|
101
|
+
[
|
|
102
|
+
'The team at the track in pictures',
|
|
103
|
+
[],
|
|
104
|
+
6
|
|
105
|
+
],
|
|
106
|
+
[
|
|
107
|
+
'Next races',
|
|
108
|
+
[
|
|
109
|
+
'new:Race events'
|
|
110
|
+
],
|
|
111
|
+
4
|
|
112
|
+
],
|
|
113
|
+
[
|
|
114
|
+
'Questions people ask, answered',
|
|
115
|
+
[],
|
|
116
|
+
5
|
|
117
|
+
],
|
|
118
|
+
[
|
|
119
|
+
'Call to action: sponsor or join',
|
|
120
|
+
[],
|
|
121
|
+
0
|
|
122
|
+
]
|
|
123
|
+
]),
|
|
124
|
+
page('fxRiders', 'Riders', '/riders', [
|
|
125
|
+
[
|
|
126
|
+
'Page intro',
|
|
127
|
+
[],
|
|
128
|
+
0
|
|
129
|
+
],
|
|
130
|
+
[
|
|
131
|
+
'Rider profiles',
|
|
132
|
+
[
|
|
133
|
+
'new:Riders'
|
|
134
|
+
],
|
|
135
|
+
6
|
|
136
|
+
],
|
|
137
|
+
[
|
|
138
|
+
'How young riders join',
|
|
139
|
+
[],
|
|
140
|
+
3
|
|
141
|
+
],
|
|
142
|
+
[
|
|
143
|
+
'Call to action: ask about joining',
|
|
144
|
+
[],
|
|
145
|
+
0
|
|
146
|
+
]
|
|
147
|
+
]),
|
|
148
|
+
page('fxSchedule', 'Schedule and Results', '/schedule-results', [
|
|
149
|
+
[
|
|
150
|
+
'Page intro',
|
|
151
|
+
[],
|
|
152
|
+
0
|
|
153
|
+
],
|
|
154
|
+
[
|
|
155
|
+
'Upcoming races',
|
|
156
|
+
[
|
|
157
|
+
'new:Race events'
|
|
158
|
+
],
|
|
159
|
+
5
|
|
160
|
+
],
|
|
161
|
+
[
|
|
162
|
+
'Past results',
|
|
163
|
+
[
|
|
164
|
+
'new:Race events'
|
|
165
|
+
],
|
|
166
|
+
5
|
|
167
|
+
],
|
|
168
|
+
[
|
|
169
|
+
'Race day for families: what to expect',
|
|
170
|
+
[],
|
|
171
|
+
4
|
|
172
|
+
]
|
|
173
|
+
]),
|
|
174
|
+
page('fxSponsors', 'Sponsors', '/sponsors', [
|
|
175
|
+
[
|
|
176
|
+
'Page intro: thank you to our sponsors',
|
|
177
|
+
[],
|
|
178
|
+
0
|
|
179
|
+
],
|
|
180
|
+
[
|
|
181
|
+
'Sponsor wall',
|
|
182
|
+
[],
|
|
183
|
+
6
|
|
184
|
+
],
|
|
185
|
+
[
|
|
186
|
+
'What sponsoring a rider is like',
|
|
187
|
+
[],
|
|
188
|
+
4
|
|
189
|
+
],
|
|
190
|
+
[
|
|
191
|
+
'Sponsorship questions answered',
|
|
192
|
+
[],
|
|
193
|
+
4
|
|
194
|
+
],
|
|
195
|
+
[
|
|
196
|
+
'Call to action: become a sponsor',
|
|
197
|
+
[],
|
|
198
|
+
0
|
|
199
|
+
]
|
|
200
|
+
]),
|
|
201
|
+
page('fxContact', 'Contact and Sponsor Inquiries', '/contact', [
|
|
202
|
+
[
|
|
203
|
+
'Page intro: how to reach the team',
|
|
204
|
+
[],
|
|
205
|
+
0
|
|
206
|
+
],
|
|
207
|
+
[
|
|
208
|
+
'Inquiry form',
|
|
209
|
+
[
|
|
210
|
+
'new:Get in touch form'
|
|
211
|
+
],
|
|
212
|
+
0
|
|
213
|
+
],
|
|
214
|
+
[
|
|
215
|
+
'Where to find us and contact details',
|
|
216
|
+
[],
|
|
217
|
+
3
|
|
218
|
+
]
|
|
219
|
+
])
|
|
220
|
+
];
|
|
221
|
+
/** The site's words the dataset unit's brief opened with (the guided start's brief; no contact details). */ export const RUT_RUNNERS_BRIEF = 'A 5-page website for Amateur motocross race team: rider profiles, race schedule and results, sponsors, and sponsor inquiries. It is for Local businesses that sponsor riders, race fans and families following the team, and young riders who want to join. Make it a fitness & sports site.';
|
|
222
|
+
const RACE_FIELDS = RUT_RUNNERS_RACE_EVENTS.fields.map((name)=>({
|
|
223
|
+
name,
|
|
224
|
+
type: 'text'
|
|
225
|
+
}));
|
|
226
|
+
/** One record as the `submit_dataset` tool answers it: a value per field, in order. */ const race = (event, values, status)=>{
|
|
227
|
+
var _values_date, _values_track, _values_location, _values_klass, _values_result;
|
|
228
|
+
return {
|
|
229
|
+
values: [
|
|
230
|
+
event,
|
|
231
|
+
(_values_date = values.date) != null ? _values_date : '',
|
|
232
|
+
(_values_track = values.track) != null ? _values_track : '',
|
|
233
|
+
(_values_location = values.location) != null ? _values_location : '',
|
|
234
|
+
(_values_klass = values.klass) != null ? _values_klass : '',
|
|
235
|
+
(_values_result = values.result) != null ? _values_result : '',
|
|
236
|
+
status
|
|
237
|
+
]
|
|
238
|
+
};
|
|
239
|
+
};
|
|
240
|
+
/**
|
|
241
|
+
* The "Race events" answer of 2026-10-25, through the tool: the seven
|
|
242
|
+
* planned fields and ten numbered placeholders, every value beside the name
|
|
243
|
+
* left empty but the Status the name gave.
|
|
244
|
+
*/ export const RACE_EVENTS_PLACEHOLDER_ANSWER = {
|
|
245
|
+
fields: RACE_FIELDS,
|
|
246
|
+
records: [
|
|
247
|
+
...[
|
|
248
|
+
1,
|
|
249
|
+
2,
|
|
250
|
+
3,
|
|
251
|
+
4,
|
|
252
|
+
5
|
|
253
|
+
].map((n)=>race(`Upcoming race ${n} (details to be added)`, {}, 'Upcoming')),
|
|
254
|
+
...[
|
|
255
|
+
1,
|
|
256
|
+
2,
|
|
257
|
+
3,
|
|
258
|
+
4,
|
|
259
|
+
5
|
|
260
|
+
].map((n)=>race(`Past race ${n} (details to be added)`, {}, 'Past'))
|
|
261
|
+
]
|
|
262
|
+
};
|
|
263
|
+
/** An answer with the fields and no records: what a start that keeps no samples writes. */ export const RACE_EVENTS_EMPTY_ANSWER = {
|
|
264
|
+
fields: RACE_FIELDS,
|
|
265
|
+
records: []
|
|
266
|
+
};
|
|
267
|
+
/** One sample record as the tool answers it: complete of its kind, its date left for the platform. */ const sampleRace = (event, values, status)=>_extends({}, race(event, values, status), {
|
|
268
|
+
sample: true
|
|
269
|
+
});
|
|
270
|
+
/**
|
|
271
|
+
* The re-ask's answer under the decided rule (AGL-4065): SAMPLES for the
|
|
272
|
+
* owner to replace, each complete of its kind in the brief's own words — a
|
|
273
|
+
* fictional series at a fictional track — marked sample, three to come and
|
|
274
|
+
* two behind, the dates left "" for the platform to set.
|
|
275
|
+
*/ export const RACE_EVENTS_SAMPLE_ANSWER = {
|
|
276
|
+
fields: RACE_FIELDS,
|
|
277
|
+
records: [
|
|
278
|
+
sampleRace('Hill Country Series Round 1', {
|
|
279
|
+
track: 'Cedar Hollow MX',
|
|
280
|
+
location: 'Central Texas',
|
|
281
|
+
klass: '250 Intermediate'
|
|
282
|
+
}, 'Upcoming'),
|
|
283
|
+
sampleRace('Hill Country Series Round 2', {
|
|
284
|
+
track: 'Red Mesa Raceway',
|
|
285
|
+
location: 'Central Texas',
|
|
286
|
+
klass: 'Youth 85cc'
|
|
287
|
+
}, 'Upcoming'),
|
|
288
|
+
sampleRace('Hill Country Series Round 3', {
|
|
289
|
+
track: 'Cedar Hollow MX',
|
|
290
|
+
location: 'Central Texas',
|
|
291
|
+
klass: 'Adult amateur',
|
|
292
|
+
result: 'Top ten'
|
|
293
|
+
}, 'Upcoming'),
|
|
294
|
+
sampleRace('Fall Classic at Red Mesa', {
|
|
295
|
+
track: 'Red Mesa Raceway',
|
|
296
|
+
location: 'Central Texas',
|
|
297
|
+
klass: '250 Intermediate',
|
|
298
|
+
result: 'Two riders on the podium'
|
|
299
|
+
}, 'Past'),
|
|
300
|
+
sampleRace('Season opener at Cedar Hollow', {
|
|
301
|
+
track: 'Cedar Hollow MX',
|
|
302
|
+
location: 'Central Texas',
|
|
303
|
+
klass: 'Youth 85cc',
|
|
304
|
+
result: 'Fifth in the main'
|
|
305
|
+
}, 'Past')
|
|
306
|
+
]
|
|
307
|
+
};
|
|
308
|
+
/** A sample answer that numbers stand-ins: what the validator still refuses. */ export const ITEMS_ANSWER = {
|
|
309
|
+
fields: RACE_FIELDS,
|
|
310
|
+
records: [
|
|
311
|
+
1,
|
|
312
|
+
2,
|
|
313
|
+
3
|
|
314
|
+
].map((n)=>_extends({}, race(`Item ${n}`, {
|
|
315
|
+
track: 'Cedar Hollow MX',
|
|
316
|
+
klass: 'Open'
|
|
317
|
+
}, 'Upcoming'), {
|
|
318
|
+
sample: true
|
|
319
|
+
}))
|
|
320
|
+
};
|
|
321
|
+
/**
|
|
322
|
+
* A second recording's shape (AGL-4065): three races a brief could give —
|
|
323
|
+
* fictional tracks — beside two numbered placeholders.
|
|
324
|
+
*/ export const RACE_EVENTS_MIXED_ANSWER = {
|
|
325
|
+
fields: RACE_FIELDS,
|
|
326
|
+
records: [
|
|
327
|
+
race('Spring opener', {
|
|
328
|
+
track: 'Cedar Hollow MX',
|
|
329
|
+
klass: '250 Intermediate'
|
|
330
|
+
}, 'Upcoming'),
|
|
331
|
+
race('Summer night series', {
|
|
332
|
+
track: 'Red Mesa Raceway',
|
|
333
|
+
klass: 'Youth 85cc'
|
|
334
|
+
}, 'Upcoming'),
|
|
335
|
+
race('Fall finale', {
|
|
336
|
+
track: 'Cedar Hollow MX',
|
|
337
|
+
klass: '250 Intermediate'
|
|
338
|
+
}, 'Past'),
|
|
339
|
+
race('Upcoming race 4 (details to be added)', {}, 'Upcoming'),
|
|
340
|
+
race('Past race 5 (details to be added)', {}, 'Past')
|
|
341
|
+
]
|
|
342
|
+
};
|
|
343
|
+
/** The Riders answer's names as the 2026-10-25 start wrote them: roles, never numbered, each with a bio. */ export const RIDERS_ANSWER = {
|
|
344
|
+
fields: RUT_RUNNERS_RIDERS.fields.map((name)=>({
|
|
345
|
+
name,
|
|
346
|
+
type: 'text'
|
|
347
|
+
})),
|
|
348
|
+
records: [
|
|
349
|
+
'Mini rider',
|
|
350
|
+
'Junior rider',
|
|
351
|
+
'Youth rider',
|
|
352
|
+
'Intermediate rider',
|
|
353
|
+
'Adult amateur rider',
|
|
354
|
+
'Team captain'
|
|
355
|
+
].map((name)=>({
|
|
356
|
+
values: [
|
|
357
|
+
name,
|
|
358
|
+
'',
|
|
359
|
+
'',
|
|
360
|
+
'',
|
|
361
|
+
'',
|
|
362
|
+
`A ${name.toLowerCase()} on the team, racing amateur motocross across Central Texas.`
|
|
363
|
+
]
|
|
364
|
+
}))
|
|
365
|
+
};
|
|
366
|
+
/** A list whose records are numbered and real: a course's levels, each described. */ export const LEVELS_ANSWER = {
|
|
367
|
+
fields: [
|
|
368
|
+
{
|
|
369
|
+
name: 'Class',
|
|
370
|
+
type: 'text'
|
|
371
|
+
},
|
|
372
|
+
{
|
|
373
|
+
name: 'Description',
|
|
374
|
+
type: 'text'
|
|
375
|
+
}
|
|
376
|
+
],
|
|
377
|
+
records: [
|
|
378
|
+
{
|
|
379
|
+
values: [
|
|
380
|
+
'Level 1',
|
|
381
|
+
'First laps on a small bike: throttle, brakes and body position on flat ground.'
|
|
382
|
+
]
|
|
383
|
+
},
|
|
384
|
+
{
|
|
385
|
+
values: [
|
|
386
|
+
'Level 2',
|
|
387
|
+
'Corners, ruts and small jumps, with a coach beside the track.'
|
|
388
|
+
]
|
|
389
|
+
},
|
|
390
|
+
{
|
|
391
|
+
values: [
|
|
392
|
+
'Level 3',
|
|
393
|
+
'Starts, whoops and race lines for riders ready for their first race.'
|
|
394
|
+
]
|
|
395
|
+
}
|
|
396
|
+
]
|
|
397
|
+
};
|
|
398
|
+
/** The Berm & Bolt start's inputs, as the guided start sent them (no contact details). */ export const BERM_BOLT_INPUTS = {
|
|
399
|
+
businessType: 'Dirt bike and ATV parts shop: OEM and aftermarket parts, tires, riding gear, special orders; in-store pickup',
|
|
400
|
+
audience: 'Weekend riders, motocross racers and ranch ATV owners around Kyle who need parts fast and real advice',
|
|
401
|
+
starter: 'physical-shop',
|
|
402
|
+
siteKind: 'store',
|
|
403
|
+
pages: 5,
|
|
404
|
+
businessName: 'Berm & Bolt Moto Parts',
|
|
405
|
+
city: 'Kyle',
|
|
406
|
+
submissions: 'inbox',
|
|
407
|
+
welcomeEmail: true
|
|
408
|
+
};
|
|
409
|
+
/** The Berm & Bolt start's brief. */ export const BERM_BOLT_BRIEF = 'A 5-page website for Dirt bike and ATV parts shop: OEM and aftermarket parts, tires, riding gear, special orders; in-store pickup. It is for Weekend riders, motocross racers and ranch ATV owners around Kyle who need parts fast and real advice. Make it a online store site.';
|
|
410
|
+
const storePage = (id, title, slug, sections)=>_extends({}, page(id, title, slug, sections), {
|
|
411
|
+
layout: 'new:Storefront layout'
|
|
412
|
+
});
|
|
413
|
+
/** The Berm & Bolt plan's pages, as planned. */ export const BERM_BOLT_SCREENS = [
|
|
414
|
+
storePage('fxStoreHome', 'Home', '/', [
|
|
415
|
+
[
|
|
416
|
+
'Hero: the right part before the weekend',
|
|
417
|
+
[],
|
|
418
|
+
0
|
|
419
|
+
],
|
|
420
|
+
[
|
|
421
|
+
'Shop by collection',
|
|
422
|
+
[],
|
|
423
|
+
4
|
|
424
|
+
],
|
|
425
|
+
[
|
|
426
|
+
'Bestsellers',
|
|
427
|
+
[],
|
|
428
|
+
0
|
|
429
|
+
],
|
|
430
|
+
[
|
|
431
|
+
'Why buy here',
|
|
432
|
+
[],
|
|
433
|
+
4
|
|
434
|
+
],
|
|
435
|
+
[
|
|
436
|
+
'Our story',
|
|
437
|
+
[],
|
|
438
|
+
0
|
|
439
|
+
],
|
|
440
|
+
[
|
|
441
|
+
'Customer reviews',
|
|
442
|
+
[],
|
|
443
|
+
0
|
|
444
|
+
],
|
|
445
|
+
[
|
|
446
|
+
'Newsletter sign-up',
|
|
447
|
+
[
|
|
448
|
+
'new:Parts inquiry form'
|
|
449
|
+
],
|
|
450
|
+
0
|
|
451
|
+
]
|
|
452
|
+
]),
|
|
453
|
+
storePage('fxStoreShop', 'Shop', '/shop', [
|
|
454
|
+
[
|
|
455
|
+
'Shop title and intro',
|
|
456
|
+
[],
|
|
457
|
+
0
|
|
458
|
+
],
|
|
459
|
+
[
|
|
460
|
+
'Product grid',
|
|
461
|
+
[],
|
|
462
|
+
0
|
|
463
|
+
],
|
|
464
|
+
[
|
|
465
|
+
'In-store pickup and shipping help',
|
|
466
|
+
[],
|
|
467
|
+
3
|
|
468
|
+
]
|
|
469
|
+
]),
|
|
470
|
+
storePage('fxStoreSpecial', 'Special Orders & Fitment', '/special-orders', [
|
|
471
|
+
[
|
|
472
|
+
'Special orders intro',
|
|
473
|
+
[],
|
|
474
|
+
0
|
|
475
|
+
],
|
|
476
|
+
[
|
|
477
|
+
'How a special order works',
|
|
478
|
+
[],
|
|
479
|
+
4
|
|
480
|
+
],
|
|
481
|
+
[
|
|
482
|
+
'What we can source',
|
|
483
|
+
[
|
|
484
|
+
'new:Parts categories'
|
|
485
|
+
],
|
|
486
|
+
5
|
|
487
|
+
],
|
|
488
|
+
[
|
|
489
|
+
'Fitment questions and contact button',
|
|
490
|
+
[],
|
|
491
|
+
0
|
|
492
|
+
]
|
|
493
|
+
]),
|
|
494
|
+
storePage('fxStoreAbout', 'About', '/about', [
|
|
495
|
+
[
|
|
496
|
+
'About intro',
|
|
497
|
+
[],
|
|
498
|
+
0
|
|
499
|
+
],
|
|
500
|
+
[
|
|
501
|
+
'Our story since 2018',
|
|
502
|
+
[],
|
|
503
|
+
0
|
|
504
|
+
],
|
|
505
|
+
[
|
|
506
|
+
'Who we serve',
|
|
507
|
+
[],
|
|
508
|
+
3
|
|
509
|
+
],
|
|
510
|
+
[
|
|
511
|
+
'Areas we serve',
|
|
512
|
+
[],
|
|
513
|
+
5
|
|
514
|
+
],
|
|
515
|
+
[
|
|
516
|
+
'Visit the shop button',
|
|
517
|
+
[],
|
|
518
|
+
0
|
|
519
|
+
]
|
|
520
|
+
]),
|
|
521
|
+
storePage('fxStoreContact', 'Contact', '/contact', [
|
|
522
|
+
[
|
|
523
|
+
'Contact intro',
|
|
524
|
+
[],
|
|
525
|
+
0
|
|
526
|
+
],
|
|
527
|
+
[
|
|
528
|
+
'Parts inquiry form',
|
|
529
|
+
[
|
|
530
|
+
'new:Parts inquiry form'
|
|
531
|
+
],
|
|
532
|
+
0
|
|
533
|
+
],
|
|
534
|
+
[
|
|
535
|
+
'Shop details: address, phone, hours, pickup',
|
|
536
|
+
[],
|
|
537
|
+
4
|
|
538
|
+
]
|
|
539
|
+
])
|
|
540
|
+
];
|
|
541
|
+
/** The Berm & Bolt plan's form, as planned. */ export const BERM_BOLT_FORM = {
|
|
542
|
+
kind: 'form',
|
|
543
|
+
name: 'Parts inquiry form',
|
|
544
|
+
why: 'No saved form exists; visitors need to ask about parts, fitment and special orders.',
|
|
545
|
+
duplicateOf: null,
|
|
546
|
+
fields: [
|
|
547
|
+
'name',
|
|
548
|
+
'email',
|
|
549
|
+
'phone',
|
|
550
|
+
'inquiry type',
|
|
551
|
+
'bike or ATV make',
|
|
552
|
+
'model',
|
|
553
|
+
'year',
|
|
554
|
+
'part or question',
|
|
555
|
+
'pickup preferred',
|
|
556
|
+
'consent'
|
|
557
|
+
],
|
|
558
|
+
writesTo: 'new:Parts inquiries',
|
|
559
|
+
id: 'fxPartsForm'
|
|
560
|
+
};
|
|
561
|
+
/** One proposed product in the catalog tool's shape. */ const product = (name, price)=>({
|
|
562
|
+
name,
|
|
563
|
+
type: 'physical',
|
|
564
|
+
description: `${name} for dirt bikes and ATVs, ready for pickup in the shop.`,
|
|
565
|
+
tags: [
|
|
566
|
+
'dirt bike',
|
|
567
|
+
'atv'
|
|
568
|
+
],
|
|
569
|
+
options: [],
|
|
570
|
+
seoTitle: name,
|
|
571
|
+
seoDescription: `${name} at Berm & Bolt Moto Parts.`,
|
|
572
|
+
photo: `A ${name.toLowerCase()} on a workbench.`,
|
|
573
|
+
price
|
|
574
|
+
});
|
|
575
|
+
/** The six names the 2026-10-25 catalog proposed, which the store listed at suggested prices. */ export const BERM_BOLT_CATALOG_NAMES = [
|
|
576
|
+
'OEM Dirt Bike Parts Order',
|
|
577
|
+
'OEM ATV Parts Order',
|
|
578
|
+
'Aftermarket Dirt Bike Part',
|
|
579
|
+
'Dirt Bike Tire',
|
|
580
|
+
'ATV Tire',
|
|
581
|
+
'Riding Gear Item'
|
|
582
|
+
];
|
|
583
|
+
/** The catalog answer of 2026-10-25, reconstructed around its six names. */ export const BERM_BOLT_CATALOG_ANSWER = {
|
|
584
|
+
products: BERM_BOLT_CATALOG_NAMES.map((name, index)=>product(name, [
|
|
585
|
+
40,
|
|
586
|
+
40,
|
|
587
|
+
35,
|
|
588
|
+
95,
|
|
589
|
+
120,
|
|
590
|
+
60
|
|
591
|
+
][index]))
|
|
592
|
+
};
|
|
593
|
+
/** A catalog answer that names each sample as a plain item of its kind. */ export const BERM_BOLT_SAMPLE_ANSWER = {
|
|
594
|
+
products: [
|
|
595
|
+
product('Dirt bike brake pads', 35),
|
|
596
|
+
product('Knobby dirt bike tire', 95),
|
|
597
|
+
product('Motocross helmet', 180)
|
|
598
|
+
]
|
|
599
|
+
};
|
|
600
|
+
|
|
601
|
+
//# sourceMappingURL=ai-site-agl4065-datasets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../libs/plugins/ai/src/lib/jobs/fixtures/ai-site-agl4065-datasets.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { AiBuildPlanCreate, AiBuildPlanScreen } from '../../model/ai-build-plan'\n\n/**\n * RECORDED, NOT GOLDEN (AGL-4065): what two of the 2026-10-25 booth-kit\n * guided starts in the test workspace planned and answered, for the offline\n * replays of Lane B. Both businesses are fictional. No contact detail,\n * address, person, workspace or site id is kept: screen ids are this\n * fixture's own.\n *\n * - RUT RUNNERS RACING, an amateur motocross team (`siteKind: fitness`): its\n * plan's five pages and its \"Race events\" dataset. The job dump keeps only\n * the dataset's record NAMES and which fields most records left empty\n * (date, track, location, class, result: every one); the values beside the\n * names are reconstructed from those, Status being \"Upcoming\" or \"Past\" as\n * the names said.\n * - BERM & BOLT MOTO PARTS, a dirt bike and ATV parts shop (`siteKind:\n * store`): its inputs, its plan's five pages and its first products'\n * names. The dump keeps the products' names only; the rest of each\n * proposed product is reconstructed in the catalog tool's shape.\n */\n\n/** The Rut Runners plan's \"Race events\" creation, as planned. */\nexport const RUT_RUNNERS_RACE_EVENTS: AiBuildPlanCreate = {\n kind: 'dataset',\n name: 'Race events',\n why: 'The race schedule and results are a list of similar events that no listed dataset covers.',\n duplicateOf: null,\n fields: ['Event', 'Date', 'Track', 'Location', 'Class', 'Result', 'Status'],\n id: 'fxRaceEvts',\n}\n\n/** The Rut Runners plan's \"Riders\" creation, as planned. */\nexport const RUT_RUNNERS_RIDERS: AiBuildPlanCreate = {\n kind: 'dataset',\n name: 'Riders',\n why: 'Rider profiles are a list of 4 or more similar items and none of the listed datasets hold riders.',\n duplicateOf: null,\n fields: ['Name', 'Age class', 'Bike number', 'Bike', 'Home town', 'Bio'],\n id: 'fxRiders01',\n}\n\nconst page = (\n id: string,\n title: string,\n slug: string,\n sections: Array<[string, string[], number]>,\n): AiBuildPlanScreen => ({\n id,\n title,\n slug,\n layout: 'new:Team site layout',\n template: null,\n duplicateOf: null,\n nav: true,\n seoTitle: title,\n seoDescription: title,\n record: null,\n sections: sections.map(([name, uses, items]) => ({ name, uses, items })),\n})\n\n/** The Rut Runners plan's pages, as planned (titles, addresses and sections). */\nexport const RUT_RUNNERS_SCREENS: AiBuildPlanScreen[] = [\n page('fxHome', 'Home', '/', [\n ['Hero: built in Lockhart, raced across Texas', [], 0],\n ['How to get started with the team', [], 4],\n ['Riders and programs', ['new:Riders'], 4],\n ['The team at the track in pictures', [], 6],\n ['Next races', ['new:Race events'], 4],\n ['Questions people ask, answered', [], 5],\n ['Call to action: sponsor or join', [], 0],\n ]),\n page('fxRiders', 'Riders', '/riders', [\n ['Page intro', [], 0],\n ['Rider profiles', ['new:Riders'], 6],\n ['How young riders join', [], 3],\n ['Call to action: ask about joining', [], 0],\n ]),\n page('fxSchedule', 'Schedule and Results', '/schedule-results', [\n ['Page intro', [], 0],\n ['Upcoming races', ['new:Race events'], 5],\n ['Past results', ['new:Race events'], 5],\n ['Race day for families: what to expect', [], 4],\n ]),\n page('fxSponsors', 'Sponsors', '/sponsors', [\n ['Page intro: thank you to our sponsors', [], 0],\n ['Sponsor wall', [], 6],\n ['What sponsoring a rider is like', [], 4],\n ['Sponsorship questions answered', [], 4],\n ['Call to action: become a sponsor', [], 0],\n ]),\n page('fxContact', 'Contact and Sponsor Inquiries', '/contact', [\n ['Page intro: how to reach the team', [], 0],\n ['Inquiry form', ['new:Get in touch form'], 0],\n ['Where to find us and contact details', [], 3],\n ]),\n]\n\n/** The site's words the dataset unit's brief opened with (the guided start's brief; no contact details). */\nexport const RUT_RUNNERS_BRIEF =\n 'A 5-page website for Amateur motocross race team: rider profiles, race schedule and results, sponsors, and sponsor inquiries. It is for Local businesses that sponsor riders, race fans and families following the team, and young riders who want to join. Make it a fitness & sports site.'\n\nconst RACE_FIELDS = RUT_RUNNERS_RACE_EVENTS.fields.map((name) => ({ name, type: 'text' }))\n\n/** One record as the `submit_dataset` tool answers it: a value per field, in order. */\nconst race = (event: string, values: Partial<Record<'date' | 'track' | 'location' | 'klass' | 'result', string>>, status: string) => ({\n values: [event, values.date ?? '', values.track ?? '', values.location ?? '', values.klass ?? '', values.result ?? '', status],\n})\n\n/**\n * The \"Race events\" answer of 2026-10-25, through the tool: the seven\n * planned fields and ten numbered placeholders, every value beside the name\n * left empty but the Status the name gave.\n */\nexport const RACE_EVENTS_PLACEHOLDER_ANSWER = {\n fields: RACE_FIELDS,\n records: [\n ...[1, 2, 3, 4, 5].map((n) => race(`Upcoming race ${n} (details to be added)`, {}, 'Upcoming')),\n ...[1, 2, 3, 4, 5].map((n) => race(`Past race ${n} (details to be added)`, {}, 'Past')),\n ],\n}\n\n/** An answer with the fields and no records: what a start that keeps no samples writes. */\nexport const RACE_EVENTS_EMPTY_ANSWER = { fields: RACE_FIELDS, records: [] as Array<{ values: string[] }> }\n\n/** One sample record as the tool answers it: complete of its kind, its date left for the platform. */\nconst sampleRace = (event: string, values: Partial<Record<'track' | 'location' | 'klass' | 'result', string>>, status: string) => ({\n ...race(event, values, status),\n sample: true,\n})\n\n/**\n * The re-ask's answer under the decided rule (AGL-4065): SAMPLES for the\n * owner to replace, each complete of its kind in the brief's own words — a\n * fictional series at a fictional track — marked sample, three to come and\n * two behind, the dates left \"\" for the platform to set.\n */\nexport const RACE_EVENTS_SAMPLE_ANSWER = {\n fields: RACE_FIELDS,\n records: [\n sampleRace('Hill Country Series Round 1', { track: 'Cedar Hollow MX', location: 'Central Texas', klass: '250 Intermediate' }, 'Upcoming'),\n sampleRace('Hill Country Series Round 2', { track: 'Red Mesa Raceway', location: 'Central Texas', klass: 'Youth 85cc' }, 'Upcoming'),\n sampleRace('Hill Country Series Round 3', { track: 'Cedar Hollow MX', location: 'Central Texas', klass: 'Adult amateur', result: 'Top ten' }, 'Upcoming'),\n sampleRace('Fall Classic at Red Mesa', { track: 'Red Mesa Raceway', location: 'Central Texas', klass: '250 Intermediate', result: 'Two riders on the podium' }, 'Past'),\n sampleRace('Season opener at Cedar Hollow', { track: 'Cedar Hollow MX', location: 'Central Texas', klass: 'Youth 85cc', result: 'Fifth in the main' }, 'Past'),\n ],\n}\n\n/** A sample answer that numbers stand-ins: what the validator still refuses. */\nexport const ITEMS_ANSWER = {\n fields: RACE_FIELDS,\n records: [1, 2, 3].map((n) => ({ ...race(`Item ${n}`, { track: 'Cedar Hollow MX', klass: 'Open' }, 'Upcoming'), sample: true })),\n}\n\n/**\n * A second recording's shape (AGL-4065): three races a brief could give —\n * fictional tracks — beside two numbered placeholders.\n */\nexport const RACE_EVENTS_MIXED_ANSWER = {\n fields: RACE_FIELDS,\n records: [\n race('Spring opener', { track: 'Cedar Hollow MX', klass: '250 Intermediate' }, 'Upcoming'),\n race('Summer night series', { track: 'Red Mesa Raceway', klass: 'Youth 85cc' }, 'Upcoming'),\n race('Fall finale', { track: 'Cedar Hollow MX', klass: '250 Intermediate' }, 'Past'),\n race('Upcoming race 4 (details to be added)', {}, 'Upcoming'),\n race('Past race 5 (details to be added)', {}, 'Past'),\n ],\n}\n\n/** The Riders answer's names as the 2026-10-25 start wrote them: roles, never numbered, each with a bio. */\nexport const RIDERS_ANSWER = {\n fields: RUT_RUNNERS_RIDERS.fields.map((name) => ({ name, type: 'text' })),\n records: ['Mini rider', 'Junior rider', 'Youth rider', 'Intermediate rider', 'Adult amateur rider', 'Team captain'].map((name) => ({\n values: [name, '', '', '', '', `A ${name.toLowerCase()} on the team, racing amateur motocross across Central Texas.`],\n })),\n}\n\n/** A list whose records are numbered and real: a course's levels, each described. */\nexport const LEVELS_ANSWER = {\n fields: [\n { name: 'Class', type: 'text' },\n { name: 'Description', type: 'text' },\n ],\n records: [\n { values: ['Level 1', 'First laps on a small bike: throttle, brakes and body position on flat ground.'] },\n { values: ['Level 2', 'Corners, ruts and small jumps, with a coach beside the track.'] },\n { values: ['Level 3', 'Starts, whoops and race lines for riders ready for their first race.'] },\n ],\n}\n\n/** The Berm & Bolt start's inputs, as the guided start sent them (no contact details). */\nexport const BERM_BOLT_INPUTS = {\n businessType: 'Dirt bike and ATV parts shop: OEM and aftermarket parts, tires, riding gear, special orders; in-store pickup',\n audience: 'Weekend riders, motocross racers and ranch ATV owners around Kyle who need parts fast and real advice',\n starter: 'physical-shop',\n siteKind: 'store',\n pages: 5,\n businessName: 'Berm & Bolt Moto Parts',\n city: 'Kyle',\n submissions: 'inbox',\n welcomeEmail: true,\n}\n\n/** The Berm & Bolt start's brief. */\nexport const BERM_BOLT_BRIEF =\n 'A 5-page website for Dirt bike and ATV parts shop: OEM and aftermarket parts, tires, riding gear, special orders; in-store pickup. It is for Weekend riders, motocross racers and ranch ATV owners around Kyle who need parts fast and real advice. Make it a online store site.'\n\nconst storePage = (id: string, title: string, slug: string, sections: Array<[string, string[], number]>): AiBuildPlanScreen => ({\n ...page(id, title, slug, sections),\n layout: 'new:Storefront layout',\n})\n\n/** The Berm & Bolt plan's pages, as planned. */\nexport const BERM_BOLT_SCREENS: AiBuildPlanScreen[] = [\n storePage('fxStoreHome', 'Home', '/', [\n ['Hero: the right part before the weekend', [], 0],\n ['Shop by collection', [], 4],\n ['Bestsellers', [], 0],\n ['Why buy here', [], 4],\n ['Our story', [], 0],\n ['Customer reviews', [], 0],\n ['Newsletter sign-up', ['new:Parts inquiry form'], 0],\n ]),\n storePage('fxStoreShop', 'Shop', '/shop', [\n ['Shop title and intro', [], 0],\n ['Product grid', [], 0],\n ['In-store pickup and shipping help', [], 3],\n ]),\n storePage('fxStoreSpecial', 'Special Orders & Fitment', '/special-orders', [\n ['Special orders intro', [], 0],\n ['How a special order works', [], 4],\n ['What we can source', ['new:Parts categories'], 5],\n ['Fitment questions and contact button', [], 0],\n ]),\n storePage('fxStoreAbout', 'About', '/about', [\n ['About intro', [], 0],\n ['Our story since 2018', [], 0],\n ['Who we serve', [], 3],\n ['Areas we serve', [], 5],\n ['Visit the shop button', [], 0],\n ]),\n storePage('fxStoreContact', 'Contact', '/contact', [\n ['Contact intro', [], 0],\n ['Parts inquiry form', ['new:Parts inquiry form'], 0],\n ['Shop details: address, phone, hours, pickup', [], 4],\n ]),\n]\n\n/** The Berm & Bolt plan's form, as planned. */\nexport const BERM_BOLT_FORM: AiBuildPlanCreate = {\n kind: 'form',\n name: 'Parts inquiry form',\n why: 'No saved form exists; visitors need to ask about parts, fitment and special orders.',\n duplicateOf: null,\n fields: ['name', 'email', 'phone', 'inquiry type', 'bike or ATV make', 'model', 'year', 'part or question', 'pickup preferred', 'consent'],\n writesTo: 'new:Parts inquiries',\n id: 'fxPartsForm',\n}\n\n/** One proposed product in the catalog tool's shape. */\nconst product = (name: string, price: number) => ({\n name,\n type: 'physical',\n description: `${name} for dirt bikes and ATVs, ready for pickup in the shop.`,\n tags: ['dirt bike', 'atv'],\n options: [],\n seoTitle: name,\n seoDescription: `${name} at Berm & Bolt Moto Parts.`,\n photo: `A ${name.toLowerCase()} on a workbench.`,\n price,\n})\n\n/** The six names the 2026-10-25 catalog proposed, which the store listed at suggested prices. */\nexport const BERM_BOLT_CATALOG_NAMES = [\n 'OEM Dirt Bike Parts Order',\n 'OEM ATV Parts Order',\n 'Aftermarket Dirt Bike Part',\n 'Dirt Bike Tire',\n 'ATV Tire',\n 'Riding Gear Item',\n] as const\n\n/** The catalog answer of 2026-10-25, reconstructed around its six names. */\nexport const BERM_BOLT_CATALOG_ANSWER = {\n products: BERM_BOLT_CATALOG_NAMES.map((name, index) => product(name, [40, 40, 35, 95, 120, 60][index] as number)),\n}\n\n/** A catalog answer that names each sample as a plain item of its kind. */\nexport const BERM_BOLT_SAMPLE_ANSWER = {\n products: [product('Dirt bike brake pads', 35), product('Knobby dirt bike tire', 95), product('Motocross helmet', 180)],\n}\n"],"names":["RUT_RUNNERS_RACE_EVENTS","kind","name","why","duplicateOf","fields","id","RUT_RUNNERS_RIDERS","page","title","slug","sections","layout","template","nav","seoTitle","seoDescription","record","map","uses","items","RUT_RUNNERS_SCREENS","RUT_RUNNERS_BRIEF","RACE_FIELDS","type","race","event","values","status","date","track","location","klass","result","RACE_EVENTS_PLACEHOLDER_ANSWER","records","n","RACE_EVENTS_EMPTY_ANSWER","sampleRace","sample","RACE_EVENTS_SAMPLE_ANSWER","ITEMS_ANSWER","RACE_EVENTS_MIXED_ANSWER","RIDERS_ANSWER","toLowerCase","LEVELS_ANSWER","BERM_BOLT_INPUTS","businessType","audience","starter","siteKind","pages","businessName","city","submissions","welcomeEmail","BERM_BOLT_BRIEF","storePage","BERM_BOLT_SCREENS","BERM_BOLT_FORM","writesTo","product","price","description","tags","options","photo","BERM_BOLT_CATALOG_NAMES","BERM_BOLT_CATALOG_ANSWER","products","index","BERM_BOLT_SAMPLE_ANSWER"],"mappings":"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"}
|