markform 0.1.3 → 0.1.5

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 (36) hide show
  1. package/README.md +110 -70
  2. package/dist/ai-sdk.d.mts +2 -2
  3. package/dist/ai-sdk.mjs +5 -5
  4. package/dist/{apply-00UmzDKL.mjs → apply-BCCiJzQr.mjs} +371 -26
  5. package/dist/bin.mjs +6 -6
  6. package/dist/{cli-D--Lel-e.mjs → cli-D469amuk.mjs} +386 -96
  7. package/dist/cli.mjs +6 -6
  8. package/dist/{coreTypes-BXhhz9Iq.d.mts → coreTypes-9XZSNOv6.d.mts} +1878 -325
  9. package/dist/{coreTypes-Dful87E0.mjs → coreTypes-pyctKRgc.mjs} +79 -5
  10. package/dist/index.d.mts +142 -5
  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-Dm8jZ5dl.mjs → src-Df0XX7UB.mjs} +818 -125
  17. package/docs/markform-apis.md +194 -0
  18. package/{DOCS.md → docs/markform-reference.md} +130 -69
  19. package/{SPEC.md → docs/markform-spec.md} +359 -108
  20. package/examples/earnings-analysis/earnings-analysis.form.md +88 -800
  21. package/examples/earnings-analysis/earnings-analysis.valid.ts +16 -148
  22. package/examples/movie-research/movie-research-basic.form.md +41 -37
  23. package/examples/movie-research/movie-research-deep.form.md +110 -98
  24. package/examples/movie-research/movie-research-minimal.form.md +29 -15
  25. package/examples/simple/simple-mock-filled.form.md +105 -41
  26. package/examples/simple/simple-skipped-filled.form.md +103 -41
  27. package/examples/simple/simple-with-skips.session.yaml +93 -25
  28. package/examples/simple/simple.form.md +86 -32
  29. package/examples/simple/simple.session.yaml +98 -25
  30. package/examples/startup-deep-research/startup-deep-research.form.md +130 -103
  31. package/examples/startup-research/startup-research-mock-filled.form.md +55 -55
  32. package/examples/startup-research/startup-research.form.md +36 -36
  33. package/package.json +18 -19
  34. package/dist/session-DdAtY2Ni.mjs +0 -4
  35. package/dist/shared-D7gf27Tr.mjs +0 -3
  36. package/examples/celebrity-deep-research/celebrity-deep-research.form.md +0 -912
@@ -45,127 +45,127 @@ markform:
45
45
  Comprehensive movie research covering ratings from multiple sources, box office performance, full cast and crew, technical specifications, streaming availability, and cultural impact analysis.
46
46
  {% /description %}
47
47
 
48
- {% field-group id="movie_input" title="Movie Identification" %}
48
+ {% 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").
54
54
  {% /instructions %}
55
55
 
56
- {% /field-group %}
56
+ {% /group %}
57
57
 
58
58
  ## Title Identification
59
59
 
60
- {% field-group id="title_identification" title="Title Identification" %}
60
+ {% 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
- {% /field-group %}
70
+ {% /group %}
71
71
 
72
72
  ## Sources
73
73
 
74
- {% field-group id="primary_sources" title="Primary Sources" %}
74
+ {% 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.
93
93
  {% /instructions %}
94
94
 
95
- {% /field-group %}
95
+ {% /group %}
96
96
 
97
- {% field-group id="box_office_sources" title="Box Office Sources" %}
97
+ {% 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.
110
110
  {% /instructions %}
111
111
 
112
- {% /field-group %}
112
+ {% /group %}
113
113
 
114
- {% field-group id="availability_sources" title="Availability Sources" %}
114
+ {% 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.
120
120
  Format: https://www.justwatch.com/us/movie/the-shawshank-redemption
121
121
  {% /instructions %}
122
122
 
123
- {% /field-group %}
123
+ {% /group %}
124
124
 
125
- {% field-group id="additional_sources" title="Additional Sources" %}
125
+ {% 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.
143
143
  {% /instructions %}
144
144
 
145
- {% /field-group %}
145
+ {% /group %}
146
146
 
147
147
  ## Basic Details
148
148
 
149
- {% field-group id="basic_details" title="Basic Details" %}
149
+ {% 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,35 +188,39 @@ 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.
203
203
  {% /instructions %}
204
204
 
205
- {% /field-group %}
205
+ {% /group %}
206
206
 
207
207
  ## Cast & Crew
208
208
 
209
- {% field-group id="cast_crew" title="Cast & Crew" %}
209
+ {% 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).
@@ -240,111 +244,111 @@ Format: Name (producer type)
240
244
  Example: "Emma Thomas (producer)"
241
245
  {% /instructions %}
242
246
 
243
- {% /field-group %}
247
+ {% /group %}
244
248
 
245
249
  ## Ratings
246
250
 
247
- {% field-group id="imdb_ratings" title="IMDB Ratings" %}
251
+ {% 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).
259
263
  {% /instructions %}
260
264
 
261
- {% /field-group %}
265
+ {% /group %}
262
266
 
263
- {% field-group id="rotten_tomatoes_ratings" title="Rotten Tomatoes Ratings" %}
267
+ {% 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.
283
287
  {% /instructions %}
284
288
 
285
- {% /field-group %}
289
+ {% /group %}
286
290
 
287
- {% field-group id="metacritic_ratings" title="Metacritic Ratings" %}
291
+ {% 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.
293
297
  {% /instructions %}
294
298
 
295
- {% /field-group %}
299
+ {% /group %}
296
300
 
297
- {% field-group id="additional_ratings" title="Additional Ratings" %}
301
+ {% 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.
309
313
  {% /instructions %}
310
314
 
311
- {% /field-group %}
315
+ {% /group %}
312
316
 
313
317
  ## Box Office
314
318
 
315
- {% field-group id="box_office" title="Box Office" %}
319
+ {% 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.
339
343
  {% /instructions %}
340
344
 
341
- {% /field-group %}
345
+ {% /group %}
342
346
 
343
347
  ## Technical Specifications
344
348
 
345
- {% field-group id="technical_specs" title="Technical Specifications" %}
349
+ {% 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,33 +361,33 @@ 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").
378
382
  {% /instructions %}
379
383
 
380
- {% /field-group %}
384
+ {% /group %}
381
385
 
382
386
  ## Streaming Availability
383
387
 
384
- {% field-group id="streaming_availability" title="Streaming Availability (US)" %}
388
+ {% 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,26 +401,26 @@ 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
- {% /field-group %}
417
+ {% /group %}
414
418
 
415
419
  ## Content & Themes
416
420
 
417
- {% field-group id="content_themes" title="Content & Themes" %}
421
+ {% 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,62 +429,70 @@ 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").
438
442
  {% /instructions %}
439
443
 
440
- {% /field-group %}
444
+ {% /group %}
441
445
 
442
446
  ## Summary & Legacy
443
447
 
444
- {% field-group id="summary" title="Summary" %}
448
+ {% 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
- {% /field-group %}
479
+ {% /group %}
468
480
 
469
- {% field-group id="cultural_legacy" title="Cultural Legacy" %}
481
+ {% 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.
482
494
  {% /instructions %}
483
495
 
484
- {% /field-group %}
496
+ {% /group %}
485
497
 
486
498
  {% /form %}
@@ -14,41 +14,55 @@ markform:
14
14
  ---
15
15
  {% form id="movie_research_minimal" title="Movie Research (Minimal)" %}
16
16
 
17
- <!-- The first field group is filled in by the user (role="user"): -->
17
+ ## Movie Research Example
18
18
 
19
- {% field-group id="movie_input" title="Movie Identification" %}
19
+ {% group id="movie_input" title="Movie Identification" %}
20
20
 
21
- {% string-field id="movie" label="Movie" role="user" required=true minLength=1 maxLength=300 %}{% /string-field %}
21
+ What movie do you want to research? \[*This field is filled in by the user (`role="user"`).*\]
22
+
23
+ {% field kind="string" id="movie" label="Movie" role="user" required=true minLength=1 maxLength=300 %}{% /field %}
22
24
  {% instructions ref="movie" %}Enter the movie title (add year or details for disambiguation).{% /instructions %}
23
25
 
24
- {% /field-group %}
26
+ {% /group %}
27
+
28
+ ## About the Movie
29
+
30
+ {% group id="about_the_movie" title="About the Movie" %}
31
+
32
+ **Title:**
25
33
 
26
- <!-- Everything else is filled in by the agent (role="agent"): -->
34
+ {% field kind="string" id="full_title" label="Full Title" role="agent" required=true %}{% /field %}
35
+ {% instructions ref="full_title" %}Official title, including subtitle if any.{% /instructions %}
27
36
 
28
- {% field-group id="about_the_movie" title="About the Movie" %}
37
+ **Release year:**
29
38
 
30
- {% string-field id="full_title" label="Full Title" role="agent" required=true %}{% /string-field %}
31
- {% instructions ref="full_title" %}Official title including subtitle if any.{% /instructions %}
39
+ {% field kind="number" id="year" label="Release Year" role="agent" required=true min=1888 max=2030 %}{% /field %}
32
40
 
33
- {% number-field id="year" label="Release Year" role="agent" required=true min=1888 max=2030 %}{% /number-field %}
41
+ **IMDB:**
34
42
 
35
- {% url-field id="imdb_url" label="IMDB URL" role="agent" required=true %}{% /url-field %}
43
+ {% field kind="url" id="imdb_url" label="IMDB URL" role="agent" required=true %}{% /field %}
36
44
 
37
- {% single-select id="mpaa_rating" label="MPAA Rating" role="agent" %}
45
+ **MPAA rating:**
46
+
47
+ {% field kind="single_select" id="mpaa_rating" label="MPAA Rating" role="agent" %}
38
48
  - [ ] G {% #g %}
39
49
  - [ ] PG {% #pg %}
40
50
  - [ ] PG-13 {% #pg_13 %}
41
51
  - [ ] R {% #r %}
42
52
  - [ ] NC-17 {% #nc_17 %}
43
53
  - [ ] NR/Unrated {% #nr %}
44
- {% /single-select %}
54
+ {% /field %}
55
+
56
+ **IMDB rating:**
45
57
 
46
- {% number-field id="imdb_rating" label="IMDB Rating" role="agent" min=1.0 max=10.0 %}{% /number-field %}
58
+ {% field kind="number" id="imdb_rating" label="IMDB Rating" role="agent" min=1.0 max=10.0 %}{% /field %}
47
59
  {% instructions ref="imdb_rating" %}IMDB user rating (1.0-10.0 scale).{% /instructions %}
48
60
 
49
- {% string-field id="logline" label="One-Line Summary" role="agent" maxLength=300 %}{% /string-field %}
61
+ **Summary:**
62
+
63
+ {% field kind="string" id="logline" label="One-Line Summary" role="agent" maxLength=300 %}{% /field %}
50
64
  {% instructions ref="logline" %}Brief plot summary in 1-2 sentences, no spoilers.{% /instructions %}
51
65
 
52
- {% /field-group %}
66
+ {% /group %}
53
67
 
54
68
  {% /form %}