markform 0.1.1 → 0.1.3

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/DOCS.md +546 -0
  2. package/README.md +340 -71
  3. package/SPEC.md +2779 -0
  4. package/dist/ai-sdk.d.mts +2 -2
  5. package/dist/ai-sdk.mjs +5 -3
  6. package/dist/{apply-BQdd-fdx.mjs → apply-00UmzDKL.mjs} +849 -730
  7. package/dist/bin.mjs +6 -3
  8. package/dist/{cli-pjOiHgCW.mjs → cli-D--Lel-e.mjs} +1374 -428
  9. package/dist/cli.mjs +6 -3
  10. package/dist/{coreTypes--6etkcwb.d.mts → coreTypes-BXhhz9Iq.d.mts} +1946 -794
  11. package/dist/coreTypes-Dful87E0.mjs +537 -0
  12. package/dist/index.d.mts +116 -19
  13. package/dist/index.mjs +5 -3
  14. package/dist/session-Bqnwi9wp.mjs +110 -0
  15. package/dist/session-DdAtY2Ni.mjs +4 -0
  16. package/dist/shared-D7gf27Tr.mjs +3 -0
  17. package/dist/shared-N_s1M-_K.mjs +176 -0
  18. package/dist/src-Dm8jZ5dl.mjs +7587 -0
  19. package/examples/celebrity-deep-research/celebrity-deep-research.form.md +912 -0
  20. package/examples/earnings-analysis/earnings-analysis.form.md +6 -1
  21. package/examples/earnings-analysis/earnings-analysis.valid.ts +119 -59
  22. package/examples/movie-research/movie-research-basic.form.md +164 -0
  23. package/examples/movie-research/movie-research-deep.form.md +486 -0
  24. package/examples/movie-research/movie-research-minimal.form.md +54 -0
  25. package/examples/simple/simple-mock-filled.form.md +17 -13
  26. package/examples/simple/simple-skipped-filled.form.md +32 -9
  27. package/examples/simple/simple-with-skips.session.yaml +102 -143
  28. package/examples/simple/simple.form.md +13 -13
  29. package/examples/simple/simple.session.yaml +80 -69
  30. package/examples/startup-deep-research/startup-deep-research.form.md +60 -8
  31. package/examples/startup-research/startup-research-mock-filled.form.md +1 -1
  32. package/examples/startup-research/startup-research.form.md +1 -1
  33. package/package.json +10 -14
  34. package/dist/src-Cs4_9lWP.mjs +0 -2151
  35. package/examples/political-research/political-research.form.md +0 -233
  36. package/examples/political-research/political-research.mock.lincoln.form.md +0 -355
@@ -0,0 +1,486 @@
1
+ ---
2
+ markform:
3
+ spec: MF/0.1
4
+ title: Movie Research (Deep)
5
+ description: Comprehensive movie research form with ratings, box office, cast/crew, technical specs, streaming availability, and cultural analysis.
6
+ roles:
7
+ - user
8
+ - agent
9
+ role_instructions:
10
+ user: "Enter the movie title and optionally the year for disambiguation."
11
+ agent: |
12
+ Conduct comprehensive research and fill in all available fields for the specified movie.
13
+
14
+ WORKFLOW - Complete in this order:
15
+ 1. IDENTIFY - Confirm the movie title and year
16
+ 2. SOURCES - Find all source URLs first (verify correct movie on each site)
17
+ 3. BASIC DATA - Fill ratings, cast, crew from IMDB
18
+ 4. ADDITIONAL RATINGS - RT, Metacritic, Letterboxd scores
19
+ 5. BOX OFFICE - Financial data from Box Office Mojo
20
+ 6. STREAMING - Current availability from JustWatch
21
+ 7. DEEP ANALYSIS - Technical specs, awards, cultural context
22
+
23
+ SOURCE MAPPING:
24
+ - IMDB: Core data, cast, crew, technical specs, awards
25
+ - Rotten Tomatoes: Tomatometer, Audience Score, Critics Consensus
26
+ - Metacritic: Metascore
27
+ - Box Office Mojo: Budget, domestic/worldwide gross, opening weekend
28
+ - JustWatch: Current streaming platforms (use US region)
29
+ - Letterboxd: Cinephile community rating
30
+ - Wikipedia: Cultural impact, production history
31
+
32
+ GUIDELINES:
33
+ - Use EXACT scores from each source - don't average or interpret
34
+ - Skip fields if data unavailable (older films may lack some metrics)
35
+ - For box office, use millions (e.g., 100.5 for $100.5M)
36
+ - Add notes for any missing, confusing, or unclear information
37
+ harness_config:
38
+ max_issues_per_turn: 5
39
+ max_patches_per_turn: 15
40
+ ---
41
+
42
+ {% form id="movie_research_deep" title="Movie Research (Deep)" %}
43
+
44
+ {% description ref="movie_research_deep" %}
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
+ {% /description %}
47
+
48
+ {% field-group id="movie_input" title="Movie Identification" %}
49
+
50
+ {% string-field id="movie" label="Movie" role="user" required=true minLength=1 maxLength=300 %}{% /string-field %}
51
+
52
+ {% instructions ref="movie" %}
53
+ Enter the movie title (add any details to help identify, like "Barbie 2023" or "the Batman movie with Robert Pattinson").
54
+ {% /instructions %}
55
+
56
+ {% /field-group %}
57
+
58
+ ## Title Identification
59
+
60
+ {% field-group id="title_identification" title="Title Identification" %}
61
+
62
+ {% string-field id="full_title" label="Full Title" role="agent" required=true %}{% /string-field %}
63
+
64
+ {% instructions ref="full_title" %}
65
+ Official title including subtitle if any (e.g., "The Lord of the Rings: The Fellowship of the Ring").
66
+ {% /instructions %}
67
+
68
+ {% number-field id="year" label="Release Year" role="agent" required=true min=1888 max=2030 %}{% /number-field %}
69
+
70
+ {% /field-group %}
71
+
72
+ ## Sources
73
+
74
+ {% field-group id="primary_sources" title="Primary Sources" %}
75
+
76
+ {% url-field id="imdb_url" label="IMDB URL" role="agent" required=true %}{% /url-field %}
77
+
78
+ {% instructions ref="imdb_url" %}
79
+ Required. Primary source for ratings, cast, crew, technical details.
80
+ Format: https://www.imdb.com/title/tt0111161/
81
+ {% /instructions %}
82
+
83
+ {% url-field id="rt_url" label="Rotten Tomatoes URL" role="agent" %}{% /url-field %}
84
+
85
+ {% instructions ref="rt_url" %}
86
+ Direct link to the movie's Rotten Tomatoes page.
87
+ {% /instructions %}
88
+
89
+ {% url-field id="metacritic_url" label="Metacritic URL" role="agent" %}{% /url-field %}
90
+
91
+ {% instructions ref="metacritic_url" %}
92
+ Direct link to the movie's Metacritic page.
93
+ {% /instructions %}
94
+
95
+ {% /field-group %}
96
+
97
+ {% field-group id="box_office_sources" title="Box Office Sources" %}
98
+
99
+ {% url-field id="boxofficemojo_url" label="Box Office Mojo URL" role="agent" %}{% /url-field %}
100
+
101
+ {% instructions ref="boxofficemojo_url" %}
102
+ Best source for budget, domestic/worldwide gross, opening weekend.
103
+ Format: https://www.boxofficemojo.com/title/tt0111161/
104
+ {% /instructions %}
105
+
106
+ {% url-field id="the_numbers_url" label="The Numbers URL" role="agent" %}{% /url-field %}
107
+
108
+ {% instructions ref="the_numbers_url" %}
109
+ Alternative/supplementary box office data and profitability analysis.
110
+ {% /instructions %}
111
+
112
+ {% /field-group %}
113
+
114
+ {% field-group id="availability_sources" title="Availability Sources" %}
115
+
116
+ {% url-field id="justwatch_url" label="JustWatch URL" role="agent" %}{% /url-field %}
117
+
118
+ {% instructions ref="justwatch_url" %}
119
+ Best source for current streaming availability. Use US region.
120
+ Format: https://www.justwatch.com/us/movie/the-shawshank-redemption
121
+ {% /instructions %}
122
+
123
+ {% /field-group %}
124
+
125
+ {% field-group id="additional_sources" title="Additional Sources" %}
126
+
127
+ {% url-field id="letterboxd_url" label="Letterboxd URL" role="agent" %}{% /url-field %}
128
+
129
+ {% instructions ref="letterboxd_url" %}
130
+ Cinephile community ratings. Especially useful for art/indie/cult films.
131
+ {% /instructions %}
132
+
133
+ {% url-field id="wikipedia_url" label="Wikipedia URL" role="agent" %}{% /url-field %}
134
+
135
+ {% instructions ref="wikipedia_url" %}
136
+ For production history, cultural impact, comprehensive awards list.
137
+ {% /instructions %}
138
+
139
+ {% url-field id="official_site_url" label="Official Website" role="agent" %}{% /url-field %}
140
+
141
+ {% instructions ref="official_site_url" %}
142
+ Studio or film's official website, if still active.
143
+ {% /instructions %}
144
+
145
+ {% /field-group %}
146
+
147
+ ## Basic Details
148
+
149
+ {% field-group id="basic_details" title="Basic Details" %}
150
+
151
+ {% string-list id="directors" label="Director(s)" role="agent" required=true %}{% /string-list %}
152
+
153
+ {% instructions ref="directors" %}
154
+ One director per line. Most films have one; some have two or more co-directors.
155
+ {% /instructions %}
156
+
157
+ {% number-field id="runtime_minutes" label="Runtime (minutes)" role="agent" min=1 max=1000 %}{% /number-field %}
158
+
159
+ {% single-select id="mpaa_rating" label="MPAA Rating" role="agent" %}
160
+ - [ ] G {% #g %}
161
+ - [ ] PG {% #pg %}
162
+ - [ ] PG-13 {% #pg_13 %}
163
+ - [ ] R {% #r %}
164
+ - [ ] NC-17 {% #nc_17 %}
165
+ - [ ] NR/Unrated {% #nr %}
166
+ {% /single-select %}
167
+
168
+ {% multi-select id="genres" label="Genres" role="agent" minSelections=1 maxSelections=5 %}
169
+ - [ ] Action {% #action %}
170
+ - [ ] Adventure {% #adventure %}
171
+ - [ ] Animation {% #animation %}
172
+ - [ ] Biography {% #biography %}
173
+ - [ ] Comedy {% #comedy %}
174
+ - [ ] Crime {% #crime %}
175
+ - [ ] Documentary {% #documentary %}
176
+ - [ ] Drama {% #drama %}
177
+ - [ ] Family {% #family %}
178
+ - [ ] Fantasy {% #fantasy %}
179
+ - [ ] Film-Noir {% #film_noir %}
180
+ - [ ] History {% #history %}
181
+ - [ ] Horror {% #horror %}
182
+ - [ ] Music {% #music %}
183
+ - [ ] Musical {% #musical %}
184
+ - [ ] Mystery {% #mystery %}
185
+ - [ ] Romance {% #romance %}
186
+ - [ ] Sci-Fi {% #sci_fi %}
187
+ - [ ] Sport {% #sport %}
188
+ - [ ] Thriller {% #thriller %}
189
+ - [ ] War {% #war %}
190
+ - [ ] Western {% #western %}
191
+ {% /multi-select %}
192
+
193
+ {% instructions ref="genres" %}
194
+ Select all applicable genres from IMDB (up to 5).
195
+ {% /instructions %}
196
+
197
+ {% string-field id="original_language" label="Original Language" role="agent" %}{% /string-field %}
198
+
199
+ {% string-list id="countries" label="Countries" role="agent" %}{% /string-list %}
200
+
201
+ {% instructions ref="countries" %}
202
+ Production countries, one per line.
203
+ {% /instructions %}
204
+
205
+ {% /field-group %}
206
+
207
+ ## Cast & Crew
208
+
209
+ {% field-group id="cast_crew" title="Cast & Crew" %}
210
+
211
+ {% string-list id="lead_cast" label="Lead Cast" role="agent" minItems=1 maxItems=10 %}{% /string-list %}
212
+
213
+ {% instructions ref="lead_cast" %}
214
+ Top-billed cast members with their character names.
215
+ Format: Actor Name | Character Name
216
+ Example: "Leonardo DiCaprio | Dom Cobb"
217
+ {% /instructions %}
218
+
219
+ {% string-list id="writers" label="Writers" role="agent" %}{% /string-list %}
220
+
221
+ {% instructions ref="writers" %}
222
+ Screenplay and story credits.
223
+ Format: Name (credit type)
224
+ Example: "Christopher Nolan (written by)"
225
+ {% /instructions %}
226
+
227
+ {% string-field id="cinematographer" label="Cinematographer" role="agent" %}{% /string-field %}
228
+
229
+ {% string-field id="composer" label="Composer" role="agent" %}{% /string-field %}
230
+
231
+ {% instructions ref="composer" %}
232
+ Film score composer (not soundtrack songs).
233
+ {% /instructions %}
234
+
235
+ {% string-list id="producers" label="Producers" role="agent" maxItems=5 %}{% /string-list %}
236
+
237
+ {% instructions ref="producers" %}
238
+ Key producers (limit to main credited producers).
239
+ Format: Name (producer type)
240
+ Example: "Emma Thomas (producer)"
241
+ {% /instructions %}
242
+
243
+ {% /field-group %}
244
+
245
+ ## Ratings
246
+
247
+ {% field-group id="imdb_ratings" title="IMDB Ratings" %}
248
+
249
+ {% number-field id="imdb_rating" label="IMDB Rating" role="agent" min=1.0 max=10.0 %}{% /number-field %}
250
+
251
+ {% instructions ref="imdb_rating" %}
252
+ IMDB user rating (1.0-10.0 scale).
253
+ {% /instructions %}
254
+
255
+ {% number-field id="imdb_votes" label="IMDB Vote Count" role="agent" min=0 %}{% /number-field %}
256
+
257
+ {% instructions ref="imdb_votes" %}
258
+ Number of IMDB user votes (e.g., 2800000 for a popular film).
259
+ {% /instructions %}
260
+
261
+ {% /field-group %}
262
+
263
+ {% field-group id="rotten_tomatoes_ratings" title="Rotten Tomatoes Ratings" %}
264
+
265
+ {% number-field id="rt_critics_score" label="Tomatometer (Critics)" role="agent" min=0 max=100 %}{% /number-field %}
266
+
267
+ {% instructions ref="rt_critics_score" %}
268
+ Tomatometer percentage (0-100).
269
+ {% /instructions %}
270
+
271
+ {% number-field id="rt_critics_count" label="Critics Review Count" role="agent" min=0 %}{% /number-field %}
272
+
273
+ {% number-field id="rt_audience_score" label="Audience Score" role="agent" min=0 max=100 %}{% /number-field %}
274
+
275
+ {% instructions ref="rt_audience_score" %}
276
+ Audience Score percentage (0-100).
277
+ {% /instructions %}
278
+
279
+ {% string-field id="rt_consensus" label="Critics Consensus" role="agent" maxLength=500 %}{% /string-field %}
280
+
281
+ {% instructions ref="rt_consensus" %}
282
+ The official Rotten Tomatoes critics consensus statement, if available.
283
+ {% /instructions %}
284
+
285
+ {% /field-group %}
286
+
287
+ {% field-group id="metacritic_ratings" title="Metacritic Ratings" %}
288
+
289
+ {% number-field id="metacritic_score" label="Metacritic Score" role="agent" min=0 max=100 %}{% /number-field %}
290
+
291
+ {% instructions ref="metacritic_score" %}
292
+ Metascore (0-100 scale). Leave empty if not available.
293
+ {% /instructions %}
294
+
295
+ {% /field-group %}
296
+
297
+ {% field-group id="additional_ratings" title="Additional Ratings" %}
298
+
299
+ {% number-field id="letterboxd_rating" label="Letterboxd Rating" role="agent" min=0.5 max=5.0 %}{% /number-field %}
300
+
301
+ {% instructions ref="letterboxd_rating" %}
302
+ Letterboxd average rating (0.5-5.0 scale, in 0.1 increments).
303
+ {% /instructions %}
304
+
305
+ {% string-field id="cinemascore" label="CinemaScore Grade" role="agent" pattern="^[A-F][+-]?$" %}{% /string-field %}
306
+
307
+ {% instructions ref="cinemascore" %}
308
+ Opening weekend audience grade (A+ to F). Only available for theatrical releases.
309
+ {% /instructions %}
310
+
311
+ {% /field-group %}
312
+
313
+ ## Box Office
314
+
315
+ {% field-group id="box_office" title="Box Office" %}
316
+
317
+ {% number-field id="budget_millions" label="Budget ($M)" role="agent" min=0 %}{% /number-field %}
318
+
319
+ {% instructions ref="budget_millions" %}
320
+ Production budget in millions USD. Example: 200 for $200M.
321
+ {% /instructions %}
322
+
323
+ {% number-field id="box_office_domestic_millions" label="Domestic Gross ($M)" role="agent" min=0 %}{% /number-field %}
324
+
325
+ {% instructions ref="box_office_domestic_millions" %}
326
+ US/Canada theatrical gross in millions USD.
327
+ {% /instructions %}
328
+
329
+ {% number-field id="box_office_worldwide_millions" label="Worldwide Gross ($M)" role="agent" min=0 %}{% /number-field %}
330
+
331
+ {% instructions ref="box_office_worldwide_millions" %}
332
+ Global theatrical gross in millions USD.
333
+ {% /instructions %}
334
+
335
+ {% number-field id="opening_weekend_millions" label="Opening Weekend ($M)" role="agent" min=0 %}{% /number-field %}
336
+
337
+ {% instructions ref="opening_weekend_millions" %}
338
+ US opening weekend gross in millions USD.
339
+ {% /instructions %}
340
+
341
+ {% /field-group %}
342
+
343
+ ## Technical Specifications
344
+
345
+ {% field-group id="technical_specs" title="Technical Specifications" %}
346
+
347
+ {% single-select id="aspect_ratio" label="Aspect Ratio" role="agent" %}
348
+ - [ ] 1.33:1 (Academy) {% #ratio_133 %}
349
+ - [ ] 1.66:1 {% #ratio_166 %}
350
+ - [ ] 1.78:1 (16:9) {% #ratio_178 %}
351
+ - [ ] 1.85:1 (Flat) {% #ratio_185 %}
352
+ - [ ] 2.00:1 (Univisium) {% #ratio_200 %}
353
+ - [ ] 2.20:1 (70mm) {% #ratio_220 %}
354
+ - [ ] 2.35:1 (Scope) {% #ratio_235 %}
355
+ - [ ] 2.39:1 (Scope) {% #ratio_239 %}
356
+ - [ ] 2.76:1 (Ultra Panavision) {% #ratio_276 %}
357
+ - [ ] 1.43:1 (IMAX) {% #ratio_143 %}
358
+ - [ ] 1.90:1 (IMAX Digital) {% #ratio_190 %}
359
+ - [ ] Variable {% #ratio_variable %}
360
+ {% /single-select %}
361
+
362
+ {% single-select id="color_format" label="Color" role="agent" %}
363
+ - [ ] Color {% #color %}
364
+ - [ ] Black & White {% #bw %}
365
+ - [ ] Mixed/Partial Color {% #mixed %}
366
+ {% /single-select %}
367
+
368
+ {% string-field id="sound_mix" label="Sound Mix" role="agent" %}{% /string-field %}
369
+
370
+ {% instructions ref="sound_mix" %}
371
+ Primary sound format (e.g., "Dolby Atmos", "DTS", "Dolby Digital").
372
+ {% /instructions %}
373
+
374
+ {% string-field id="camera" label="Camera" role="agent" %}{% /string-field %}
375
+
376
+ {% instructions ref="camera" %}
377
+ Primary camera system used (e.g., "Arri Alexa 65", "IMAX 15-perf", "Panavision Panaflex").
378
+ {% /instructions %}
379
+
380
+ {% /field-group %}
381
+
382
+ ## Streaming Availability
383
+
384
+ {% field-group id="streaming_availability" title="Streaming Availability (US)" %}
385
+
386
+ {% multi-select id="streaming_subscription" label="Streaming (Subscription)" role="agent" %}
387
+ - [ ] Netflix {% #netflix %}
388
+ - [ ] Amazon Prime Video {% #prime %}
389
+ - [ ] Disney+ {% #disney %}
390
+ - [ ] Max (HBO) {% #max %}
391
+ - [ ] Hulu {% #hulu %}
392
+ - [ ] Apple TV+ {% #apple %}
393
+ - [ ] Paramount+ {% #paramount %}
394
+ - [ ] Peacock {% #peacock %}
395
+ - [ ] MGM+ {% #mgm %}
396
+ - [ ] Criterion Channel {% #criterion %}
397
+ - [ ] MUBI {% #mubi %}
398
+ - [ ] Tubi (Free) {% #tubi %}
399
+ - [ ] Pluto TV (Free) {% #pluto %}
400
+ {% /multi-select %}
401
+
402
+ {% instructions ref="streaming_subscription" %}
403
+ Select all platforms where this film is currently available to stream (subscription or free). Check JustWatch for current availability.
404
+ {% /instructions %}
405
+
406
+ {% checkboxes id="availability_flags" label="Other Availability" role="agent" checkboxMode="simple" %}
407
+ - [ ] Available for digital rental {% #rental %}
408
+ - [ ] Available for digital purchase {% #purchase %}
409
+ - [ ] Physical media (Blu-ray/DVD) {% #physical %}
410
+ - [ ] 4K UHD available {% #uhd_4k %}
411
+ {% /checkboxes %}
412
+
413
+ {% /field-group %}
414
+
415
+ ## Content & Themes
416
+
417
+ {% field-group id="content_themes" title="Content & Themes" %}
418
+
419
+ {% checkboxes id="content_warnings" label="Content Warnings" role="agent" checkboxMode="simple" %}
420
+ - [ ] Intense violence {% #violence %}
421
+ - [ ] Gore/disturbing imagery {% #gore %}
422
+ - [ ] Sexual content {% #sexual %}
423
+ - [ ] Nudity {% #nudity %}
424
+ - [ ] Strong language {% #language %}
425
+ - [ ] Drug/alcohol use {% #drugs %}
426
+ - [ ] Frightening scenes {% #frightening %}
427
+ - [ ] Flashing/strobe effects {% #flashing %}
428
+ {% /checkboxes %}
429
+
430
+ {% instructions ref="content_warnings" %}
431
+ Check any content warnings that apply. Use IMDB Parents Guide as reference.
432
+ {% /instructions %}
433
+
434
+ {% string-list id="themes" label="Key Themes" role="agent" maxItems=5 %}{% /string-list %}
435
+
436
+ {% instructions ref="themes" %}
437
+ Major themes explored in the film (e.g., "redemption", "family", "identity", "war").
438
+ {% /instructions %}
439
+
440
+ {% /field-group %}
441
+
442
+ ## Summary & Legacy
443
+
444
+ {% field-group id="summary" title="Summary" %}
445
+
446
+ {% string-field id="logline" label="One-Line Summary" role="agent" maxLength=300 %}{% /string-field %}
447
+
448
+ {% instructions ref="logline" %}
449
+ Brief plot summary in 1-2 sentences, no spoilers.
450
+ {% /instructions %}
451
+
452
+ {% string-list id="notable_awards" label="Notable Awards" role="agent" %}{% /string-list %}
453
+
454
+ {% instructions ref="notable_awards" %}
455
+ Major awards won. One per line.
456
+ Format: Award | Category | Year
457
+ Example: "Oscar | Best Picture | 1995"
458
+ {% /instructions %}
459
+
460
+ {% string-list id="notable_quotes" label="Notable Critic Quotes" role="agent" maxItems=3 %}{% /string-list %}
461
+
462
+ {% instructions ref="notable_quotes" %}
463
+ 2-3 memorable critic quotes that capture reception.
464
+ Format: "Quote" - Critic, Publication
465
+ {% /instructions %}
466
+
467
+ {% /field-group %}
468
+
469
+ {% field-group id="cultural_legacy" title="Cultural Legacy" %}
470
+
471
+ {% string-field id="cultural_impact" label="Cultural Impact" role="agent" maxLength=500 %}{% /string-field %}
472
+
473
+ {% instructions ref="cultural_impact" %}
474
+ Brief description of the film's cultural significance, influence, or legacy (1-3 sentences).
475
+ Leave empty for recent releases without established legacy.
476
+ {% /instructions %}
477
+
478
+ {% string-list id="similar_films" label="Similar Films" role="agent" maxItems=5 %}{% /string-list %}
479
+
480
+ {% instructions ref="similar_films" %}
481
+ Films with similar themes, style, or appeal. One per line.
482
+ {% /instructions %}
483
+
484
+ {% /field-group %}
485
+
486
+ {% /form %}
@@ -0,0 +1,54 @@
1
+ ---
2
+ markform:
3
+ spec: MF/0.1
4
+ title: Movie Research (Minimal)
5
+ description: Quick movie lookup with just the essentials (title, year, ratings, summary).
6
+ roles:
7
+ - user
8
+ - agent
9
+ role_instructions:
10
+ user: "Enter the movie title."
11
+ agent: |
12
+ Quickly identify the movie and fill in basic info from IMDB.
13
+ This is a minimal lookup - just get the core facts.
14
+ ---
15
+ {% form id="movie_research_minimal" title="Movie Research (Minimal)" %}
16
+
17
+ <!-- The first field group is filled in by the user (role="user"): -->
18
+
19
+ {% field-group id="movie_input" title="Movie Identification" %}
20
+
21
+ {% string-field id="movie" label="Movie" role="user" required=true minLength=1 maxLength=300 %}{% /string-field %}
22
+ {% instructions ref="movie" %}Enter the movie title (add year or details for disambiguation).{% /instructions %}
23
+
24
+ {% /field-group %}
25
+
26
+ <!-- Everything else is filled in by the agent (role="agent"): -->
27
+
28
+ {% field-group id="about_the_movie" title="About the Movie" %}
29
+
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 %}
32
+
33
+ {% number-field id="year" label="Release Year" role="agent" required=true min=1888 max=2030 %}{% /number-field %}
34
+
35
+ {% url-field id="imdb_url" label="IMDB URL" role="agent" required=true %}{% /url-field %}
36
+
37
+ {% single-select id="mpaa_rating" label="MPAA Rating" role="agent" %}
38
+ - [ ] G {% #g %}
39
+ - [ ] PG {% #pg %}
40
+ - [ ] PG-13 {% #pg_13 %}
41
+ - [ ] R {% #r %}
42
+ - [ ] NC-17 {% #nc_17 %}
43
+ - [ ] NR/Unrated {% #nr %}
44
+ {% /single-select %}
45
+
46
+ {% number-field id="imdb_rating" label="IMDB Rating" role="agent" min=1.0 max=10.0 %}{% /number-field %}
47
+ {% instructions ref="imdb_rating" %}IMDB user rating (1.0-10.0 scale).{% /instructions %}
48
+
49
+ {% string-field id="logline" label="One-Line Summary" role="agent" maxLength=300 %}{% /string-field %}
50
+ {% instructions ref="logline" %}Brief plot summary in 1-2 sentences, no spoilers.{% /instructions %}
51
+
52
+ {% /field-group %}
53
+
54
+ {% /form %}
@@ -1,19 +1,19 @@
1
1
  ---
2
2
  markform:
3
- markform_version: "0.1.0"
3
+ spec: "MF/0.1"
4
+ title: Simple Test Form
5
+ description: "Fully interactive demo - no LLM required. Demonstrates all Markform field types."
4
6
  roles:
5
7
  - user
6
- - agent
7
8
  role_instructions:
8
- user: "Fill in the required fields in this form."
9
- agent: "Fill in the optional fields with reasonable test values."
9
+ user: "Fill in all fields in this form."
10
10
  ---
11
11
 
12
12
  {% form id="simple_test" title="Simple Test Form" %}
13
13
 
14
14
  {% description ref="simple_test" %}
15
- A form demonstrating user and agent roles. User fills required fields,
16
- agent fills optional fields. Demonstrates all Markform v0.1 field types.
15
+ A fully interactive form demonstrating all Markform v0.1 field types.
16
+ Fill all fields using interactive prompts - no LLM API key needed.
17
17
  {% /description %}
18
18
 
19
19
  {% field-group id="basic_fields" title="Basic Fields" %}
@@ -40,14 +40,14 @@ alice@example.com
40
40
  ```
41
41
  {% /number-field %}
42
42
 
43
- {% number-field id="score" label="Score" role="agent" min=0.0 max=100.0 %}
43
+ {% number-field id="score" label="Score" role="user" min=0.0 max=100.0 %}
44
44
  ```value
45
45
  87.5
46
46
  ```
47
47
  {% /number-field %}
48
48
 
49
49
  {% instructions ref="score" %}
50
- Assign a score between 0 and 100 based on form completeness.
50
+ Enter a score between 0 and 100 (optional).
51
51
  {% /instructions %}
52
52
 
53
53
  {% /field-group %}
@@ -140,21 +140,21 @@ Add 1-5 unique reference URLs for sources or documentation.
140
140
 
141
141
  {% /field-group %}
142
142
 
143
- {% field-group id="optional_fields" title="Optional Fields (Agent)" %}
143
+ {% field-group id="optional_fields" title="Optional Fields" %}
144
144
 
145
- {% string-field id="notes" label="Notes" role="agent" %}
145
+ {% string-field id="notes" label="Notes" role="user" %}
146
146
  ```value
147
147
  This is a test note.
148
148
  ```
149
149
  {% /string-field %}
150
150
 
151
151
  {% instructions ref="notes" %}
152
- Add any relevant notes or observations about this test form.
152
+ Add any relevant notes or observations (optional).
153
153
  {% /instructions %}
154
154
 
155
- {% number-field id="optional_number" label="Optional Number" role="agent" %}{% /number-field %}
155
+ {% number-field id="optional_number" label="Optional Number" role="user" %}{% /number-field %}
156
156
 
157
- {% url-field id="related_url" label="Related URL" role="agent" %}
157
+ {% url-field id="related_url" label="Related URL" role="user" %}
158
158
  ```value
159
159
  https://markform.dev/docs
160
160
  ```
@@ -166,4 +166,8 @@ Optionally add a URL to related documentation or resources.
166
166
 
167
167
  {% /field-group %}
168
168
 
169
+ {% note id="note-review" ref="simple_test" role="user" %}
170
+ Form completed with all required fields.
171
+ {% /note %}
172
+
169
173
  {% /form %}