markform 0.1.2 → 0.1.4

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 (35) hide show
  1. package/README.md +97 -42
  2. package/dist/ai-sdk.d.mts +2 -2
  3. package/dist/ai-sdk.mjs +5 -5
  4. package/dist/{apply-BfAGTHMh.mjs → apply-C54EMAJ1.mjs} +383 -26
  5. package/dist/bin.mjs +6 -6
  6. package/dist/{cli-B3NVm6zL.mjs → cli-BhWhn6L9.mjs} +456 -141
  7. package/dist/cli.mjs +6 -6
  8. package/dist/{coreTypes-BXhhz9Iq.d.mts → coreTypes-cbNTYAcb.d.mts} +1878 -325
  9. package/dist/{coreTypes-Dful87E0.mjs → coreTypes-pyctKRgc.mjs} +79 -5
  10. package/dist/index.d.mts +146 -9
  11. package/dist/index.mjs +5 -5
  12. package/dist/session-B_stoXQn.mjs +4 -0
  13. package/dist/{session-Bqnwi9wp.mjs → session-uF0e6m6k.mjs} +9 -5
  14. package/dist/{shared-N_s1M-_K.mjs → shared-BqPnYXrn.mjs} +82 -1
  15. package/dist/shared-CZsyShck.mjs +3 -0
  16. package/dist/{src-BXRkGFpG.mjs → src-BNh7Cx9P.mjs} +801 -121
  17. package/docs/markform-apis.md +194 -0
  18. package/{DOCS.md → docs/markform-reference.md} +111 -50
  19. package/{SPEC.md → docs/markform-spec.md} +342 -91
  20. package/examples/celebrity-deep-research/celebrity-deep-research.form.md +196 -141
  21. package/examples/earnings-analysis/earnings-analysis.form.md +236 -226
  22. package/examples/movie-research/movie-research-basic.form.md +25 -21
  23. package/examples/movie-research/movie-research-deep.form.md +74 -62
  24. package/examples/movie-research/movie-research-minimal.form.md +29 -34
  25. package/examples/simple/simple-mock-filled.form.md +93 -29
  26. package/examples/simple/simple-skipped-filled.form.md +91 -29
  27. package/examples/simple/simple-with-skips.session.yaml +93 -25
  28. package/examples/simple/simple.form.md +74 -20
  29. package/examples/simple/simple.session.yaml +98 -25
  30. package/examples/startup-deep-research/startup-deep-research.form.md +108 -81
  31. package/examples/startup-research/startup-research-mock-filled.form.md +43 -43
  32. package/examples/startup-research/startup-research.form.md +24 -24
  33. package/package.json +18 -27
  34. package/dist/session-DdAtY2Ni.mjs +0 -4
  35. package/dist/shared-D7gf27Tr.mjs +0 -3
@@ -36,7 +36,7 @@ Standard research form for gathering ratings and key statistics for any film. Pu
36
36
 
37
37
  {% field-group id="movie_input" title="Movie Identification" %}
38
38
 
39
- {% string-field id="movie" label="Movie" role="user" required=true minLength=1 maxLength=300 %}{% /string-field %}
39
+ {% field kind="string" id="movie" label="Movie" role="user" required=true minLength=1 maxLength=300 %}{% /field %}
40
40
 
41
41
  {% instructions ref="movie" %}
42
42
  Enter the movie title (add any details to help identify, like "Barbie 2023" or "the Batman movie with Robert Pattinson")
@@ -46,7 +46,7 @@ Enter the movie title (add any details to help identify, like "Barbie 2023" or "
46
46
 
47
47
  {% field-group id="title_identification" title="Title Identification" %}
48
48
 
49
- {% string-field id="full_title" label="Full Title" role="agent" required=true %}{% /string-field %}
49
+ {% field kind="string" id="full_title" label="Full Title" role="agent" required=true %}{% /field %}
50
50
 
51
51
  {% instructions ref="full_title" %}
52
52
  Look up what film the user had in mind and fill in the official title including subtitle if any (e.g., "The Lord of the Rings: The Fellowship of the Ring").
@@ -56,19 +56,19 @@ Look up what film the user had in mind and fill in the official title including
56
56
 
57
57
  {% field-group id="sources" title="Sources" %}
58
58
 
59
- {% url-field id="imdb_url" label="IMDB URL" role="agent" required=true %}{% /url-field %}
59
+ {% field kind="url" id="imdb_url" label="IMDB URL" role="agent" required=true %}{% /field %}
60
60
 
61
61
  {% instructions ref="imdb_url" %}
62
62
  Direct link to the movie's IMDB page (e.g., https://www.imdb.com/title/tt0111161/).
63
63
  {% /instructions %}
64
64
 
65
- {% url-field id="rt_url" label="Rotten Tomatoes URL" role="agent" %}{% /url-field %}
65
+ {% field kind="url" id="rt_url" label="Rotten Tomatoes URL" role="agent" %}{% /field %}
66
66
 
67
67
  {% instructions ref="rt_url" %}
68
68
  Direct link to the movie's Rotten Tomatoes page.
69
69
  {% /instructions %}
70
70
 
71
- {% url-field id="metacritic_url" label="Metacritic URL" role="agent" %}{% /url-field %}
71
+ {% field kind="url" id="metacritic_url" label="Metacritic URL" role="agent" %}{% /field %}
72
72
 
73
73
  {% instructions ref="metacritic_url" %}
74
74
  Direct link to the movie's Metacritic page.
@@ -78,36 +78,36 @@ Direct link to the movie's Metacritic page.
78
78
 
79
79
  {% field-group id="basic_details" title="Basic Details" %}
80
80
 
81
- {% number-field id="year" label="Release Year" role="agent" required=true min=1888 max=2030 %}{% /number-field %}
81
+ {% field kind="number" id="year" label="Release Year" role="agent" required=true min=1888 max=2030 %}{% /field %}
82
82
 
83
- {% string-list id="directors" label="Director(s)" role="agent" required=true %}{% /string-list %}
83
+ {% field kind="string_list" id="directors" label="Director(s)" role="agent" required=true %}{% /field %}
84
84
 
85
85
  {% instructions ref="directors" %}
86
86
  One director per line. Most films have one; some have two or more co-directors.
87
87
  {% /instructions %}
88
88
 
89
- {% number-field id="runtime_minutes" label="Runtime (minutes)" role="agent" min=1 max=1000 %}{% /number-field %}
89
+ {% field kind="number" id="runtime_minutes" label="Runtime (minutes)" role="agent" min=1 max=1000 %}{% /field %}
90
90
 
91
- {% single-select id="mpaa_rating" label="MPAA Rating" role="agent" %}
91
+ {% field kind="single_select" id="mpaa_rating" label="MPAA Rating" role="agent" %}
92
92
  - [ ] G {% #g %}
93
93
  - [ ] PG {% #pg %}
94
94
  - [ ] PG-13 {% #pg_13 %}
95
95
  - [ ] R {% #r %}
96
96
  - [ ] NC-17 {% #nc_17 %}
97
97
  - [ ] NR/Unrated {% #nr %}
98
- {% /single-select %}
98
+ {% /field %}
99
99
 
100
100
  {% /field-group %}
101
101
 
102
102
  {% field-group id="imdb_ratings" title="IMDB Ratings" %}
103
103
 
104
- {% number-field id="imdb_rating" label="IMDB Rating" role="agent" min=1.0 max=10.0 %}{% /number-field %}
104
+ {% field kind="number" id="imdb_rating" label="IMDB Rating" role="agent" min=1.0 max=10.0 %}{% /field %}
105
105
 
106
106
  {% instructions ref="imdb_rating" %}
107
107
  IMDB user rating (1.0-10.0 scale).
108
108
  {% /instructions %}
109
109
 
110
- {% number-field id="imdb_votes" label="IMDB Vote Count" role="agent" min=0 %}{% /number-field %}
110
+ {% field kind="number" id="imdb_votes" label="IMDB Vote Count" role="agent" min=0 %}{% /field %}
111
111
 
112
112
  {% instructions ref="imdb_votes" %}
113
113
  Number of IMDB user votes (e.g., 2800000 for a popular film).
@@ -117,15 +117,15 @@ Number of IMDB user votes (e.g., 2800000 for a popular film).
117
117
 
118
118
  {% field-group id="rotten_tomatoes_ratings" title="Rotten Tomatoes Ratings" %}
119
119
 
120
- {% number-field id="rt_critics_score" label="Tomatometer (Critics)" role="agent" min=0 max=100 %}{% /number-field %}
120
+ {% field kind="number" id="rt_critics_score" label="Tomatometer (Critics)" role="agent" min=0 max=100 %}{% /field %}
121
121
 
122
122
  {% instructions ref="rt_critics_score" %}
123
123
  Tomatometer percentage (0-100).
124
124
  {% /instructions %}
125
125
 
126
- {% number-field id="rt_critics_count" label="Critics Review Count" role="agent" min=0 %}{% /number-field %}
126
+ {% field kind="number" id="rt_critics_count" label="Critics Review Count" role="agent" min=0 %}{% /field %}
127
127
 
128
- {% number-field id="rt_audience_score" label="Audience Score" role="agent" min=0 max=100 %}{% /number-field %}
128
+ {% field kind="number" id="rt_audience_score" label="Audience Score" role="agent" min=0 max=100 %}{% /field %}
129
129
 
130
130
  {% instructions ref="rt_audience_score" %}
131
131
  Audience Score percentage (0-100).
@@ -135,7 +135,7 @@ Audience Score percentage (0-100).
135
135
 
136
136
  {% field-group id="metacritic_ratings" title="Metacritic Ratings" %}
137
137
 
138
- {% number-field id="metacritic_score" label="Metacritic Score" role="agent" min=0 max=100 %}{% /number-field %}
138
+ {% field kind="number" id="metacritic_score" label="Metacritic Score" role="agent" min=0 max=100 %}{% /field %}
139
139
 
140
140
  {% instructions ref="metacritic_score" %}
141
141
  Metascore (0-100 scale). Leave empty if not available.
@@ -145,18 +145,22 @@ Metascore (0-100 scale). Leave empty if not available.
145
145
 
146
146
  {% field-group id="summary" title="Summary" %}
147
147
 
148
- {% string-field id="logline" label="One-Line Summary" role="agent" maxLength=300 %}{% /string-field %}
148
+ {% field kind="string" id="logline" label="One-Line Summary" role="agent" maxLength=300 %}{% /field %}
149
149
 
150
150
  {% instructions ref="logline" %}
151
151
  Brief plot summary in 1-2 sentences, no spoilers.
152
152
  {% /instructions %}
153
153
 
154
- {% string-list id="notable_awards" label="Notable Awards" role="agent" %}{% /string-list %}
154
+ {% field kind="table" id="notable_awards" label="Notable Awards" role="agent"
155
+ columnIds=["award", "category", "year"]
156
+ columnTypes=["string", "string", "year"] %}
157
+ | Award | Category | Year |
158
+ |-------|----------|------|
159
+ {% /field %}
155
160
 
156
161
  {% instructions ref="notable_awards" %}
157
- Major awards won. One per line.
158
- Format: Award | Category | Year
159
- Example: "Oscar | Best Picture | 1995"
162
+ Major awards won.
163
+ Example: Oscar | Best Picture | 1995
160
164
  {% /instructions %}
161
165
 
162
166
  {% /field-group %}
@@ -47,7 +47,7 @@ Comprehensive movie research covering ratings from multiple sources, box office
47
47
 
48
48
  {% field-group id="movie_input" title="Movie Identification" %}
49
49
 
50
- {% string-field id="movie" label="Movie" role="user" required=true minLength=1 maxLength=300 %}{% /string-field %}
50
+ {% field kind="string" id="movie" label="Movie" role="user" required=true minLength=1 maxLength=300 %}{% /field %}
51
51
 
52
52
  {% instructions ref="movie" %}
53
53
  Enter the movie title (add any details to help identify, like "Barbie 2023" or "the Batman movie with Robert Pattinson").
@@ -59,13 +59,13 @@ Enter the movie title (add any details to help identify, like "Barbie 2023" or "
59
59
 
60
60
  {% field-group id="title_identification" title="Title Identification" %}
61
61
 
62
- {% string-field id="full_title" label="Full Title" role="agent" required=true %}{% /string-field %}
62
+ {% field kind="string" id="full_title" label="Full Title" role="agent" required=true %}{% /field %}
63
63
 
64
64
  {% instructions ref="full_title" %}
65
65
  Official title including subtitle if any (e.g., "The Lord of the Rings: The Fellowship of the Ring").
66
66
  {% /instructions %}
67
67
 
68
- {% number-field id="year" label="Release Year" role="agent" required=true min=1888 max=2030 %}{% /number-field %}
68
+ {% field kind="number" id="year" label="Release Year" role="agent" required=true min=1888 max=2030 %}{% /field %}
69
69
 
70
70
  {% /field-group %}
71
71
 
@@ -73,20 +73,20 @@ Official title including subtitle if any (e.g., "The Lord of the Rings: The Fell
73
73
 
74
74
  {% field-group id="primary_sources" title="Primary Sources" %}
75
75
 
76
- {% url-field id="imdb_url" label="IMDB URL" role="agent" required=true %}{% /url-field %}
76
+ {% field kind="url" id="imdb_url" label="IMDB URL" role="agent" required=true %}{% /field %}
77
77
 
78
78
  {% instructions ref="imdb_url" %}
79
79
  Required. Primary source for ratings, cast, crew, technical details.
80
80
  Format: https://www.imdb.com/title/tt0111161/
81
81
  {% /instructions %}
82
82
 
83
- {% url-field id="rt_url" label="Rotten Tomatoes URL" role="agent" %}{% /url-field %}
83
+ {% field kind="url" id="rt_url" label="Rotten Tomatoes URL" role="agent" %}{% /field %}
84
84
 
85
85
  {% instructions ref="rt_url" %}
86
86
  Direct link to the movie's Rotten Tomatoes page.
87
87
  {% /instructions %}
88
88
 
89
- {% url-field id="metacritic_url" label="Metacritic URL" role="agent" %}{% /url-field %}
89
+ {% field kind="url" id="metacritic_url" label="Metacritic URL" role="agent" %}{% /field %}
90
90
 
91
91
  {% instructions ref="metacritic_url" %}
92
92
  Direct link to the movie's Metacritic page.
@@ -96,14 +96,14 @@ Direct link to the movie's Metacritic page.
96
96
 
97
97
  {% field-group id="box_office_sources" title="Box Office Sources" %}
98
98
 
99
- {% url-field id="boxofficemojo_url" label="Box Office Mojo URL" role="agent" %}{% /url-field %}
99
+ {% field kind="url" id="boxofficemojo_url" label="Box Office Mojo URL" role="agent" %}{% /field %}
100
100
 
101
101
  {% instructions ref="boxofficemojo_url" %}
102
102
  Best source for budget, domestic/worldwide gross, opening weekend.
103
103
  Format: https://www.boxofficemojo.com/title/tt0111161/
104
104
  {% /instructions %}
105
105
 
106
- {% url-field id="the_numbers_url" label="The Numbers URL" role="agent" %}{% /url-field %}
106
+ {% field kind="url" id="the_numbers_url" label="The Numbers URL" role="agent" %}{% /field %}
107
107
 
108
108
  {% instructions ref="the_numbers_url" %}
109
109
  Alternative/supplementary box office data and profitability analysis.
@@ -113,7 +113,7 @@ Alternative/supplementary box office data and profitability analysis.
113
113
 
114
114
  {% field-group id="availability_sources" title="Availability Sources" %}
115
115
 
116
- {% url-field id="justwatch_url" label="JustWatch URL" role="agent" %}{% /url-field %}
116
+ {% field kind="url" id="justwatch_url" label="JustWatch URL" role="agent" %}{% /field %}
117
117
 
118
118
  {% instructions ref="justwatch_url" %}
119
119
  Best source for current streaming availability. Use US region.
@@ -124,19 +124,19 @@ Format: https://www.justwatch.com/us/movie/the-shawshank-redemption
124
124
 
125
125
  {% field-group id="additional_sources" title="Additional Sources" %}
126
126
 
127
- {% url-field id="letterboxd_url" label="Letterboxd URL" role="agent" %}{% /url-field %}
127
+ {% field kind="url" id="letterboxd_url" label="Letterboxd URL" role="agent" %}{% /field %}
128
128
 
129
129
  {% instructions ref="letterboxd_url" %}
130
130
  Cinephile community ratings. Especially useful for art/indie/cult films.
131
131
  {% /instructions %}
132
132
 
133
- {% url-field id="wikipedia_url" label="Wikipedia URL" role="agent" %}{% /url-field %}
133
+ {% field kind="url" id="wikipedia_url" label="Wikipedia URL" role="agent" %}{% /field %}
134
134
 
135
135
  {% instructions ref="wikipedia_url" %}
136
136
  For production history, cultural impact, comprehensive awards list.
137
137
  {% /instructions %}
138
138
 
139
- {% url-field id="official_site_url" label="Official Website" role="agent" %}{% /url-field %}
139
+ {% field kind="url" id="official_site_url" label="Official Website" role="agent" %}{% /field %}
140
140
 
141
141
  {% instructions ref="official_site_url" %}
142
142
  Studio or film's official website, if still active.
@@ -148,24 +148,24 @@ Studio or film's official website, if still active.
148
148
 
149
149
  {% field-group id="basic_details" title="Basic Details" %}
150
150
 
151
- {% string-list id="directors" label="Director(s)" role="agent" required=true %}{% /string-list %}
151
+ {% field kind="string_list" id="directors" label="Director(s)" role="agent" required=true %}{% /field %}
152
152
 
153
153
  {% instructions ref="directors" %}
154
154
  One director per line. Most films have one; some have two or more co-directors.
155
155
  {% /instructions %}
156
156
 
157
- {% number-field id="runtime_minutes" label="Runtime (minutes)" role="agent" min=1 max=1000 %}{% /number-field %}
157
+ {% field kind="number" id="runtime_minutes" label="Runtime (minutes)" role="agent" min=1 max=1000 %}{% /field %}
158
158
 
159
- {% single-select id="mpaa_rating" label="MPAA Rating" role="agent" %}
159
+ {% field kind="single_select" id="mpaa_rating" label="MPAA Rating" role="agent" %}
160
160
  - [ ] G {% #g %}
161
161
  - [ ] PG {% #pg %}
162
162
  - [ ] PG-13 {% #pg_13 %}
163
163
  - [ ] R {% #r %}
164
164
  - [ ] NC-17 {% #nc_17 %}
165
165
  - [ ] NR/Unrated {% #nr %}
166
- {% /single-select %}
166
+ {% /field %}
167
167
 
168
- {% multi-select id="genres" label="Genres" role="agent" minSelections=1 maxSelections=5 %}
168
+ {% field kind="multi_select" id="genres" label="Genres" role="agent" minSelections=1 maxSelections=5 %}
169
169
  - [ ] Action {% #action %}
170
170
  - [ ] Adventure {% #adventure %}
171
171
  - [ ] Animation {% #animation %}
@@ -188,15 +188,15 @@ One director per line. Most films have one; some have two or more co-directors.
188
188
  - [ ] Thriller {% #thriller %}
189
189
  - [ ] War {% #war %}
190
190
  - [ ] Western {% #western %}
191
- {% /multi-select %}
191
+ {% /field %}
192
192
 
193
193
  {% instructions ref="genres" %}
194
194
  Select all applicable genres from IMDB (up to 5).
195
195
  {% /instructions %}
196
196
 
197
- {% string-field id="original_language" label="Original Language" role="agent" %}{% /string-field %}
197
+ {% field kind="string" id="original_language" label="Original Language" role="agent" %}{% /field %}
198
198
 
199
- {% string-list id="countries" label="Countries" role="agent" %}{% /string-list %}
199
+ {% field kind="string_list" id="countries" label="Countries" role="agent" %}{% /field %}
200
200
 
201
201
  {% instructions ref="countries" %}
202
202
  Production countries, one per line.
@@ -208,15 +208,19 @@ Production countries, one per line.
208
208
 
209
209
  {% field-group id="cast_crew" title="Cast & Crew" %}
210
210
 
211
- {% string-list id="lead_cast" label="Lead Cast" role="agent" minItems=1 maxItems=10 %}{% /string-list %}
211
+ {% field kind="table" id="lead_cast" label="Lead Cast" role="agent" minRows=1 maxRows=10
212
+ columnIds=["actor_name", "character_name"]
213
+ columnTypes=["string", "string"] %}
214
+ | Actor Name | Character Name |
215
+ |------------|----------------|
216
+ {% /field %}
212
217
 
213
218
  {% instructions ref="lead_cast" %}
214
219
  Top-billed cast members with their character names.
215
- Format: Actor Name | Character Name
216
- Example: "Leonardo DiCaprio | Dom Cobb"
220
+ Example: Leonardo DiCaprio | Dom Cobb
217
221
  {% /instructions %}
218
222
 
219
- {% string-list id="writers" label="Writers" role="agent" %}{% /string-list %}
223
+ {% field kind="string_list" id="writers" label="Writers" role="agent" %}{% /field %}
220
224
 
221
225
  {% instructions ref="writers" %}
222
226
  Screenplay and story credits.
@@ -224,15 +228,15 @@ Format: Name (credit type)
224
228
  Example: "Christopher Nolan (written by)"
225
229
  {% /instructions %}
226
230
 
227
- {% string-field id="cinematographer" label="Cinematographer" role="agent" %}{% /string-field %}
231
+ {% field kind="string" id="cinematographer" label="Cinematographer" role="agent" %}{% /field %}
228
232
 
229
- {% string-field id="composer" label="Composer" role="agent" %}{% /string-field %}
233
+ {% field kind="string" id="composer" label="Composer" role="agent" %}{% /field %}
230
234
 
231
235
  {% instructions ref="composer" %}
232
236
  Film score composer (not soundtrack songs).
233
237
  {% /instructions %}
234
238
 
235
- {% string-list id="producers" label="Producers" role="agent" maxItems=5 %}{% /string-list %}
239
+ {% field kind="string_list" id="producers" label="Producers" role="agent" maxItems=5 %}{% /field %}
236
240
 
237
241
  {% instructions ref="producers" %}
238
242
  Key producers (limit to main credited producers).
@@ -246,13 +250,13 @@ Example: "Emma Thomas (producer)"
246
250
 
247
251
  {% field-group id="imdb_ratings" title="IMDB Ratings" %}
248
252
 
249
- {% number-field id="imdb_rating" label="IMDB Rating" role="agent" min=1.0 max=10.0 %}{% /number-field %}
253
+ {% field kind="number" id="imdb_rating" label="IMDB Rating" role="agent" min=1.0 max=10.0 %}{% /field %}
250
254
 
251
255
  {% instructions ref="imdb_rating" %}
252
256
  IMDB user rating (1.0-10.0 scale).
253
257
  {% /instructions %}
254
258
 
255
- {% number-field id="imdb_votes" label="IMDB Vote Count" role="agent" min=0 %}{% /number-field %}
259
+ {% field kind="number" id="imdb_votes" label="IMDB Vote Count" role="agent" min=0 %}{% /field %}
256
260
 
257
261
  {% instructions ref="imdb_votes" %}
258
262
  Number of IMDB user votes (e.g., 2800000 for a popular film).
@@ -262,21 +266,21 @@ Number of IMDB user votes (e.g., 2800000 for a popular film).
262
266
 
263
267
  {% field-group id="rotten_tomatoes_ratings" title="Rotten Tomatoes Ratings" %}
264
268
 
265
- {% number-field id="rt_critics_score" label="Tomatometer (Critics)" role="agent" min=0 max=100 %}{% /number-field %}
269
+ {% field kind="number" id="rt_critics_score" label="Tomatometer (Critics)" role="agent" min=0 max=100 %}{% /field %}
266
270
 
267
271
  {% instructions ref="rt_critics_score" %}
268
272
  Tomatometer percentage (0-100).
269
273
  {% /instructions %}
270
274
 
271
- {% number-field id="rt_critics_count" label="Critics Review Count" role="agent" min=0 %}{% /number-field %}
275
+ {% field kind="number" id="rt_critics_count" label="Critics Review Count" role="agent" min=0 %}{% /field %}
272
276
 
273
- {% number-field id="rt_audience_score" label="Audience Score" role="agent" min=0 max=100 %}{% /number-field %}
277
+ {% field kind="number" id="rt_audience_score" label="Audience Score" role="agent" min=0 max=100 %}{% /field %}
274
278
 
275
279
  {% instructions ref="rt_audience_score" %}
276
280
  Audience Score percentage (0-100).
277
281
  {% /instructions %}
278
282
 
279
- {% string-field id="rt_consensus" label="Critics Consensus" role="agent" maxLength=500 %}{% /string-field %}
283
+ {% field kind="string" id="rt_consensus" label="Critics Consensus" role="agent" maxLength=500 %}{% /field %}
280
284
 
281
285
  {% instructions ref="rt_consensus" %}
282
286
  The official Rotten Tomatoes critics consensus statement, if available.
@@ -286,7 +290,7 @@ The official Rotten Tomatoes critics consensus statement, if available.
286
290
 
287
291
  {% field-group id="metacritic_ratings" title="Metacritic Ratings" %}
288
292
 
289
- {% number-field id="metacritic_score" label="Metacritic Score" role="agent" min=0 max=100 %}{% /number-field %}
293
+ {% field kind="number" id="metacritic_score" label="Metacritic Score" role="agent" min=0 max=100 %}{% /field %}
290
294
 
291
295
  {% instructions ref="metacritic_score" %}
292
296
  Metascore (0-100 scale). Leave empty if not available.
@@ -296,13 +300,13 @@ Metascore (0-100 scale). Leave empty if not available.
296
300
 
297
301
  {% field-group id="additional_ratings" title="Additional Ratings" %}
298
302
 
299
- {% number-field id="letterboxd_rating" label="Letterboxd Rating" role="agent" min=0.5 max=5.0 %}{% /number-field %}
303
+ {% field kind="number" id="letterboxd_rating" label="Letterboxd Rating" role="agent" min=0.5 max=5.0 %}{% /field %}
300
304
 
301
305
  {% instructions ref="letterboxd_rating" %}
302
306
  Letterboxd average rating (0.5-5.0 scale, in 0.1 increments).
303
307
  {% /instructions %}
304
308
 
305
- {% string-field id="cinemascore" label="CinemaScore Grade" role="agent" pattern="^[A-F][+-]?$" %}{% /string-field %}
309
+ {% field kind="string" id="cinemascore" label="CinemaScore Grade" role="agent" pattern="^[A-F][+-]?$" %}{% /field %}
306
310
 
307
311
  {% instructions ref="cinemascore" %}
308
312
  Opening weekend audience grade (A+ to F). Only available for theatrical releases.
@@ -314,25 +318,25 @@ Opening weekend audience grade (A+ to F). Only available for theatrical releases
314
318
 
315
319
  {% field-group id="box_office" title="Box Office" %}
316
320
 
317
- {% number-field id="budget_millions" label="Budget ($M)" role="agent" min=0 %}{% /number-field %}
321
+ {% field kind="number" id="budget_millions" label="Budget ($M)" role="agent" min=0 %}{% /field %}
318
322
 
319
323
  {% instructions ref="budget_millions" %}
320
324
  Production budget in millions USD. Example: 200 for $200M.
321
325
  {% /instructions %}
322
326
 
323
- {% number-field id="box_office_domestic_millions" label="Domestic Gross ($M)" role="agent" min=0 %}{% /number-field %}
327
+ {% field kind="number" id="box_office_domestic_millions" label="Domestic Gross ($M)" role="agent" min=0 %}{% /field %}
324
328
 
325
329
  {% instructions ref="box_office_domestic_millions" %}
326
330
  US/Canada theatrical gross in millions USD.
327
331
  {% /instructions %}
328
332
 
329
- {% number-field id="box_office_worldwide_millions" label="Worldwide Gross ($M)" role="agent" min=0 %}{% /number-field %}
333
+ {% field kind="number" id="box_office_worldwide_millions" label="Worldwide Gross ($M)" role="agent" min=0 %}{% /field %}
330
334
 
331
335
  {% instructions ref="box_office_worldwide_millions" %}
332
336
  Global theatrical gross in millions USD.
333
337
  {% /instructions %}
334
338
 
335
- {% number-field id="opening_weekend_millions" label="Opening Weekend ($M)" role="agent" min=0 %}{% /number-field %}
339
+ {% field kind="number" id="opening_weekend_millions" label="Opening Weekend ($M)" role="agent" min=0 %}{% /field %}
336
340
 
337
341
  {% instructions ref="opening_weekend_millions" %}
338
342
  US opening weekend gross in millions USD.
@@ -344,7 +348,7 @@ US opening weekend gross in millions USD.
344
348
 
345
349
  {% field-group id="technical_specs" title="Technical Specifications" %}
346
350
 
347
- {% single-select id="aspect_ratio" label="Aspect Ratio" role="agent" %}
351
+ {% field kind="single_select" id="aspect_ratio" label="Aspect Ratio" role="agent" %}
348
352
  - [ ] 1.33:1 (Academy) {% #ratio_133 %}
349
353
  - [ ] 1.66:1 {% #ratio_166 %}
350
354
  - [ ] 1.78:1 (16:9) {% #ratio_178 %}
@@ -357,21 +361,21 @@ US opening weekend gross in millions USD.
357
361
  - [ ] 1.43:1 (IMAX) {% #ratio_143 %}
358
362
  - [ ] 1.90:1 (IMAX Digital) {% #ratio_190 %}
359
363
  - [ ] Variable {% #ratio_variable %}
360
- {% /single-select %}
364
+ {% /field %}
361
365
 
362
- {% single-select id="color_format" label="Color" role="agent" %}
366
+ {% field kind="single_select" id="color_format" label="Color" role="agent" %}
363
367
  - [ ] Color {% #color %}
364
368
  - [ ] Black & White {% #bw %}
365
369
  - [ ] Mixed/Partial Color {% #mixed %}
366
- {% /single-select %}
370
+ {% /field %}
367
371
 
368
- {% string-field id="sound_mix" label="Sound Mix" role="agent" %}{% /string-field %}
372
+ {% field kind="string" id="sound_mix" label="Sound Mix" role="agent" %}{% /field %}
369
373
 
370
374
  {% instructions ref="sound_mix" %}
371
375
  Primary sound format (e.g., "Dolby Atmos", "DTS", "Dolby Digital").
372
376
  {% /instructions %}
373
377
 
374
- {% string-field id="camera" label="Camera" role="agent" %}{% /string-field %}
378
+ {% field kind="string" id="camera" label="Camera" role="agent" %}{% /field %}
375
379
 
376
380
  {% instructions ref="camera" %}
377
381
  Primary camera system used (e.g., "Arri Alexa 65", "IMAX 15-perf", "Panavision Panaflex").
@@ -383,7 +387,7 @@ Primary camera system used (e.g., "Arri Alexa 65", "IMAX 15-perf", "Panavision P
383
387
 
384
388
  {% field-group id="streaming_availability" title="Streaming Availability (US)" %}
385
389
 
386
- {% multi-select id="streaming_subscription" label="Streaming (Subscription)" role="agent" %}
390
+ {% field kind="multi_select" id="streaming_subscription" label="Streaming (Subscription)" role="agent" %}
387
391
  - [ ] Netflix {% #netflix %}
388
392
  - [ ] Amazon Prime Video {% #prime %}
389
393
  - [ ] Disney+ {% #disney %}
@@ -397,18 +401,18 @@ Primary camera system used (e.g., "Arri Alexa 65", "IMAX 15-perf", "Panavision P
397
401
  - [ ] MUBI {% #mubi %}
398
402
  - [ ] Tubi (Free) {% #tubi %}
399
403
  - [ ] Pluto TV (Free) {% #pluto %}
400
- {% /multi-select %}
404
+ {% /field %}
401
405
 
402
406
  {% instructions ref="streaming_subscription" %}
403
407
  Select all platforms where this film is currently available to stream (subscription or free). Check JustWatch for current availability.
404
408
  {% /instructions %}
405
409
 
406
- {% checkboxes id="availability_flags" label="Other Availability" role="agent" checkboxMode="simple" %}
410
+ {% field kind="checkboxes" id="availability_flags" label="Other Availability" role="agent" checkboxMode="simple" %}
407
411
  - [ ] Available for digital rental {% #rental %}
408
412
  - [ ] Available for digital purchase {% #purchase %}
409
413
  - [ ] Physical media (Blu-ray/DVD) {% #physical %}
410
414
  - [ ] 4K UHD available {% #uhd_4k %}
411
- {% /checkboxes %}
415
+ {% /field %}
412
416
 
413
417
  {% /field-group %}
414
418
 
@@ -416,7 +420,7 @@ Select all platforms where this film is currently available to stream (subscript
416
420
 
417
421
  {% field-group id="content_themes" title="Content & Themes" %}
418
422
 
419
- {% checkboxes id="content_warnings" label="Content Warnings" role="agent" checkboxMode="simple" %}
423
+ {% field kind="checkboxes" id="content_warnings" label="Content Warnings" role="agent" checkboxMode="simple" %}
420
424
  - [ ] Intense violence {% #violence %}
421
425
  - [ ] Gore/disturbing imagery {% #gore %}
422
426
  - [ ] Sexual content {% #sexual %}
@@ -425,13 +429,13 @@ Select all platforms where this film is currently available to stream (subscript
425
429
  - [ ] Drug/alcohol use {% #drugs %}
426
430
  - [ ] Frightening scenes {% #frightening %}
427
431
  - [ ] Flashing/strobe effects {% #flashing %}
428
- {% /checkboxes %}
432
+ {% /field %}
429
433
 
430
434
  {% instructions ref="content_warnings" %}
431
435
  Check any content warnings that apply. Use IMDB Parents Guide as reference.
432
436
  {% /instructions %}
433
437
 
434
- {% string-list id="themes" label="Key Themes" role="agent" maxItems=5 %}{% /string-list %}
438
+ {% field kind="string_list" id="themes" label="Key Themes" role="agent" maxItems=5 %}{% /field %}
435
439
 
436
440
  {% instructions ref="themes" %}
437
441
  Major themes explored in the film (e.g., "redemption", "family", "identity", "war").
@@ -443,39 +447,47 @@ Major themes explored in the film (e.g., "redemption", "family", "identity", "wa
443
447
 
444
448
  {% field-group id="summary" title="Summary" %}
445
449
 
446
- {% string-field id="logline" label="One-Line Summary" role="agent" maxLength=300 %}{% /string-field %}
450
+ {% field kind="string" id="logline" label="One-Line Summary" role="agent" maxLength=300 %}{% /field %}
447
451
 
448
452
  {% instructions ref="logline" %}
449
453
  Brief plot summary in 1-2 sentences, no spoilers.
450
454
  {% /instructions %}
451
455
 
452
- {% string-list id="notable_awards" label="Notable Awards" role="agent" %}{% /string-list %}
456
+ {% field kind="table" id="notable_awards" label="Notable Awards" role="agent"
457
+ columnIds=["award", "category", "year"]
458
+ columnTypes=["string", "string", "year"] %}
459
+ | Award | Category | Year |
460
+ |-------|----------|------|
461
+ {% /field %}
453
462
 
454
463
  {% instructions ref="notable_awards" %}
455
- Major awards won. One per line.
456
- Format: Award | Category | Year
457
- Example: "Oscar | Best Picture | 1995"
464
+ Major awards won.
465
+ Example: Oscar | Best Picture | 1995
458
466
  {% /instructions %}
459
467
 
460
- {% string-list id="notable_quotes" label="Notable Critic Quotes" role="agent" maxItems=3 %}{% /string-list %}
468
+ {% field kind="table" id="notable_quotes" label="Notable Critic Quotes" role="agent" maxRows=3
469
+ columnIds=["quote", "critic", "publication"]
470
+ columnTypes=["string", "string", "string"] %}
471
+ | Quote | Critic | Publication |
472
+ |-------|--------|-------------|
473
+ {% /field %}
461
474
 
462
475
  {% instructions ref="notable_quotes" %}
463
476
  2-3 memorable critic quotes that capture reception.
464
- Format: "Quote" - Critic, Publication
465
477
  {% /instructions %}
466
478
 
467
479
  {% /field-group %}
468
480
 
469
481
  {% field-group id="cultural_legacy" title="Cultural Legacy" %}
470
482
 
471
- {% string-field id="cultural_impact" label="Cultural Impact" role="agent" maxLength=500 %}{% /string-field %}
483
+ {% field kind="string" id="cultural_impact" label="Cultural Impact" role="agent" maxLength=500 %}{% /field %}
472
484
 
473
485
  {% instructions ref="cultural_impact" %}
474
486
  Brief description of the film's cultural significance, influence, or legacy (1-3 sentences).
475
487
  Leave empty for recent releases without established legacy.
476
488
  {% /instructions %}
477
489
 
478
- {% string-list id="similar_films" label="Similar Films" role="agent" maxItems=5 %}{% /string-list %}
490
+ {% field kind="string_list" id="similar_films" label="Similar Films" role="agent" maxItems=5 %}{% /field %}
479
491
 
480
492
  {% instructions ref="similar_films" %}
481
493
  Films with similar themes, style, or appeal. One per line.