markform 0.1.20 → 0.1.22

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 (58) hide show
  1. package/README.md +44 -12
  2. package/dist/ai-sdk.d.mts +1 -1
  3. package/dist/ai-sdk.mjs +2 -2
  4. package/dist/{apply-DIvm1b1s.mjs → apply-C7mO7VkZ.mjs} +158 -95
  5. package/dist/apply-C7mO7VkZ.mjs.map +1 -0
  6. package/dist/bin.mjs +1 -1
  7. package/dist/{cli-FFMoEhFS.mjs → cli-C8F9yDsv.mjs} +102 -1225
  8. package/dist/cli-C8F9yDsv.mjs.map +1 -0
  9. package/dist/cli.mjs +1 -1
  10. package/dist/{coreTypes-CkxML8g2.d.mts → coreTypes-BlsJkU1w.d.mts} +28 -2
  11. package/dist/{coreTypes-CPKXf2dc.mjs → coreTypes-CTLr-NGd.mjs} +24 -3
  12. package/dist/coreTypes-CTLr-NGd.mjs.map +1 -0
  13. package/dist/fillRecord-DTl5lnK0.d.mts +345 -0
  14. package/dist/fillRecordRenderer-CruJrLkj.mjs +1256 -0
  15. package/dist/fillRecordRenderer-CruJrLkj.mjs.map +1 -0
  16. package/dist/index.d.mts +22 -342
  17. package/dist/index.mjs +5 -5
  18. package/dist/render.d.mts +74 -0
  19. package/dist/render.mjs +4 -0
  20. package/dist/{session-CK0x28RO.mjs → session-BCcltrLA.mjs} +2 -2
  21. package/dist/{session-CK0x28RO.mjs.map → session-BCcltrLA.mjs.map} +1 -1
  22. package/dist/{session-ZHBi3LVQ.mjs → session-VeSkVrck.mjs} +1 -1
  23. package/dist/{shared-DwdyWmvE.mjs → shared-CsdT2T7k.mjs} +1 -1
  24. package/dist/{shared-DwdyWmvE.mjs.map → shared-CsdT2T7k.mjs.map} +1 -1
  25. package/dist/{shared-BTR35aMz.mjs → shared-fb0nkzQi.mjs} +1 -1
  26. package/dist/{src-wR7GoftB.mjs → src-CbRnGzMK.mjs} +205 -138
  27. package/dist/src-CbRnGzMK.mjs.map +1 -0
  28. package/dist/urlFormat-lls7CsEP.mjs +71 -0
  29. package/dist/urlFormat-lls7CsEP.mjs.map +1 -0
  30. package/docs/markform-apis.md +53 -0
  31. package/examples/movie-research/movie-deep-research-mock-filled.form.md +320 -343
  32. package/examples/movie-research/movie-deep-research.form.md +273 -308
  33. package/examples/movie-research/movie-research-demo.form.md +27 -41
  34. package/examples/parallel/parallel-research.form.md +33 -29
  35. package/examples/parallel/parallel-research.mock.filled.form.md +88 -0
  36. package/examples/rejection-test/rejection-test-mock-filled.form.md +21 -16
  37. package/examples/rejection-test/rejection-test-mock-filled.schema.json +1 -1
  38. package/examples/rejection-test/rejection-test.form.md +17 -15
  39. package/examples/rejection-test/rejection-test.session.yaml +88 -60
  40. package/examples/simple/simple-mock-filled.form.md +113 -126
  41. package/examples/simple/simple-mock-filled.schema.json +2 -3
  42. package/examples/simple/simple-skipped-filled.form.md +112 -129
  43. package/examples/simple/simple-skipped-filled.report.md +8 -8
  44. package/examples/simple/simple-skipped-filled.schema.json +2 -3
  45. package/examples/simple/simple-tags-syntax.form.md +32 -0
  46. package/examples/simple/simple-with-skips.session.yaml +663 -627
  47. package/examples/simple/simple.form.md +97 -113
  48. package/examples/simple/simple.schema.json +2 -3
  49. package/examples/simple/simple.session.yaml +663 -627
  50. package/examples/startup-deep-research/startup-deep-research.form.md +191 -235
  51. package/examples/startup-research/startup-research-mock-filled.form.md +128 -147
  52. package/examples/startup-research/startup-research.form.md +90 -129
  53. package/examples/twitter-thread/twitter-thread.form.md +373 -0
  54. package/package.json +5 -1
  55. package/dist/apply-DIvm1b1s.mjs.map +0 -1
  56. package/dist/cli-FFMoEhFS.mjs.map +0 -1
  57. package/dist/coreTypes-CPKXf2dc.mjs.map +0 -1
  58. package/dist/src-wR7GoftB.mjs.map +0 -1
@@ -4,60 +4,46 @@ markform:
4
4
  title: Movie Research Demo
5
5
  description: Movie lookup with ratings from IMDB and Rotten Tomatoes.
6
6
  run_mode: research
7
- roles:
8
- - user
9
- - agent
10
7
  role_instructions:
11
- user: "Enter the movie title."
12
- agent: |
13
- Identify the movie with web searches and use imdb.com and rottentomatoes.com to fill in the ratings.
14
-
8
+ user: Enter the movie title.
9
+ agent: >
10
+ Identify the movie with web searches and use imdb.com and rottentomatoes.com to
11
+ fill in the ratings.
15
12
  ---
16
- {% form id="movie_research_demo" %}
17
-
18
- {% group id="movie_input" %}
19
-
20
- ## What movie do you want to research?
21
-
22
- {% field kind="string" id="movie" label="Movie" role="user" required=true minLength=1 maxLength=300 %}{% /field %}
23
-
24
- {% instructions ref="movie" %}Enter the movie title (add year or details for
25
- disambiguation).{% /instructions %}
26
13
 
27
- {% /group %}
14
+ <!-- form id="movie_research_demo" -->
28
15
 
29
- {% group id="about_the_movie" title="About the Movie" %}
16
+ <!-- group id="movie_input" -->
30
17
 
31
- ## Movie Ratings
18
+ <!-- field kind="string" id="movie" role="user" label="Movie" maxLength=300 minLength=1 required=true --><!-- /field -->
32
19
 
33
- Here are the ratings for the movie:
20
+ <!-- instructions ref="movie" -->
21
+ Enter the movie title (add year or details for
22
+ disambiguation).
23
+ <!-- /instructions -->
34
24
 
35
- {% field kind="single_select" id="mpaa_rating" role="agent" label="MPAA Rating" %}
25
+ <!-- /group -->
36
26
 
37
- - [ ] G {% #g %}
38
- - [ ] PG {% #pg %}
39
- - [ ] PG-13 {% #pg_13 %}
40
- - [ ] R {% #r %}
41
- - [ ] NC-17 {% #nc_17 %}
42
- - [ ] NR/Unrated {% #nr %}
27
+ <!-- group id="about_the_movie" title="About the Movie" -->
43
28
 
44
- {% /field %}
29
+ <!-- field kind="single_select" id="mpaa_rating" label="MPAA Rating" -->
30
+ - [ ] G <!-- #g -->
31
+ - [ ] PG <!-- #pg -->
32
+ - [ ] PG-13 <!-- #pg_13 -->
33
+ - [ ] R <!-- #r -->
34
+ - [ ] NC-17 <!-- #nc_17 -->
35
+ - [ ] NR/Unrated <!-- #nr -->
36
+ <!-- /field -->
45
37
 
46
- {% field kind="table" id="ratings_table" role="agent" label="Ratings" required=true columnIds=["source", "score", "votes"] columnTypes=["string", "number", "number"] minRows=0 maxRows=3 %}
38
+ <!-- field kind="table" id="ratings_table" columnIds=["source", "score", "votes"] columnLabels=["Source", "Score", "Votes"] columnTypes=["string", "number", "number"] label="Ratings" maxRows=3 minRows=0 required=true --><!-- /field -->
47
39
 
48
- | Source | Score | Votes |
49
- |--------|-------|-------|
40
+ <!-- instructions ref="ratings_table" -->
41
+ Fill in scores and vote counts from each source:IMDB: Rating (1.0-10.0 scale), vote countRT Critics: Tomatometer (0-100%), review countRT Audience: Audience Score (0-100%), rating count
42
+ <!-- /instructions -->
50
43
 
51
- {% /field %}
44
+ <!-- /group -->
52
45
 
53
- {% instructions ref="ratings_table" %}
54
- Fill in scores and vote counts from each source:
55
- - IMDB: Rating (1.0-10.0 scale), vote count
56
- - RT Critics: Tomatometer (0-100%), review count
57
- - RT Audience: Audience Score (0-100%), rating count
46
+ <!-- /form -->
58
47
 
59
- {% /instructions %}
60
48
 
61
- {% /group %}
62
49
 
63
- {% /form %}
@@ -2,56 +2,60 @@
2
2
  markform:
3
3
  spec: MF/0.1
4
4
  title: Company Research (Parallel)
5
- description: "Demonstrates parallel and order attributes for concurrent form filling."
6
- roles:
7
- - agent
8
- role_instructions:
9
- agent: "Research the company and fill in all fields."
5
+ description: Demonstrates parallel and order attributes for concurrent form filling.
10
6
  harness:
11
7
  max_turns: 10
12
8
  max_parallel_agents: 4
9
+ roles:
10
+ - agent
11
+ role_instructions:
12
+ agent: Research the company and fill in all fields.
13
13
  ---
14
- {% form id="company_research" title="Company Research (Parallel)" %}
15
14
 
16
- {% description ref="company_research" %}
17
- A company research form that uses `parallel` for concurrent deep research
18
- and `order` to sequence synthesis after data gathering.
19
- {% /description %}
15
+ <!-- form id="company_research" title="Company Research (Parallel)" -->
16
+
17
+ <!-- description ref="company_research" -->
18
+ A company research form that uses for concurrent deep research
19
+ and to sequence synthesis after data gathering.
20
+ <!-- /description -->
21
+
22
+ <!-- group id="overview" order=0 -->
23
+
24
+ <!-- field kind="string" id="company_name" label="Company Name" required=true --><!-- /field -->
25
+
26
+ <!-- field kind="string" id="company_overview" label="Company Overview" --><!-- /field -->
20
27
 
21
- {% group id="overview" order=0 %}
28
+ <!-- /group -->
22
29
 
23
- {% field kind="string" id="company_name" label="Company Name" role="agent" required=true %}{% /field %}
30
+ <!-- group id="financials" order=0 parallel="deep_research" -->
24
31
 
25
- {% field kind="string" id="company_overview" label="Company Overview" role="agent" %}{% /field %}
32
+ <!-- field kind="string" id="revenue" label="Annual Revenue" --><!-- /field -->
26
33
 
27
- {% /group %}
34
+ <!-- field kind="string" id="margins" label="Margin Analysis" --><!-- /field -->
28
35
 
29
- {% group id="financials" parallel="deep_research" order=0 %}
36
+ <!-- /group -->
30
37
 
31
- {% field kind="string" id="revenue" label="Annual Revenue" role="agent" %}{% /field %}
38
+ <!-- group id="team" order=0 parallel="deep_research" -->
32
39
 
33
- {% field kind="string" id="margins" label="Margin Analysis" role="agent" %}{% /field %}
40
+ <!-- field kind="string" id="leadership" label="Team & Leadership" --><!-- /field -->
34
41
 
35
- {% /group %}
42
+ <!-- /group -->
36
43
 
37
- {% group id="team" parallel="deep_research" order=0 %}
44
+ <!-- group id="market" order=0 parallel="deep_research" -->
38
45
 
39
- {% field kind="string" id="leadership" label="Team & Leadership" role="agent" %}{% /field %}
46
+ <!-- field kind="string" id="tam" label="TAM" --><!-- /field -->
40
47
 
41
- {% /group %}
48
+ <!-- field kind="string" id="competitors" label="Competitors" --><!-- /field -->
42
49
 
43
- {% group id="market" parallel="deep_research" order=0 %}
50
+ <!-- /group -->
44
51
 
45
- {% field kind="string" id="tam" label="TAM" role="agent" %}{% /field %}
52
+ <!-- group id="synthesis" order=10 -->
46
53
 
47
- {% field kind="string" id="competitors" label="Competitors" role="agent" %}{% /field %}
54
+ <!-- field kind="string" id="overall" label="Overall Assessment" required=true --><!-- /field -->
48
55
 
49
- {% /group %}
56
+ <!-- /group -->
50
57
 
51
- {% group id="synthesis" order=10 %}
58
+ <!-- /form -->
52
59
 
53
- {% field kind="string" id="overall" label="Overall Assessment" role="agent" required=true %}{% /field %}
54
60
 
55
- {% /group %}
56
61
 
57
- {% /form %}
@@ -0,0 +1,88 @@
1
+ ---
2
+ markform:
3
+ spec: "MF/0.1"
4
+ harness:
5
+ max_turns: 10
6
+ max_parallel_agents: 4
7
+ role_instructions:
8
+ user: "Fill in the fields you have direct knowledge of."
9
+ agent: "Complete the remaining fields based on the provided context."
10
+ ---
11
+
12
+ <!-- form id="company_research" title="Company Research (Parallel)" -->
13
+
14
+ <!-- description ref="company_research" -->
15
+ A company research form that uses for concurrent deep research
16
+ and to sequence synthesis after data gathering.
17
+ <!-- /description -->
18
+
19
+ <!-- group id="overview" order=0 -->
20
+
21
+ <!-- field kind="string" id="company_name" label="Company Name" required=true -->
22
+ ```value
23
+ Anthropic
24
+ ```
25
+ <!-- /field -->
26
+
27
+ <!-- field kind="string" id="company_overview" label="Company Overview" -->
28
+ ```value
29
+ Anthropic is an AI safety company focused on building reliable, interpretable, and steerable AI systems. Founded in 2021 by former OpenAI researchers, the company is known for developing Claude, a family of large language models designed with safety as a core principle.
30
+ ```
31
+ <!-- /field -->
32
+
33
+ <!-- /group -->
34
+
35
+ <!-- group id="financials" order=0 parallel="deep_research" -->
36
+
37
+ <!-- field kind="string" id="revenue" label="Annual Revenue" -->
38
+ ```value
39
+ Estimated $200-400M ARR as of 2024, with rapid growth driven by enterprise adoption of Claude and API services.
40
+ ```
41
+ <!-- /field -->
42
+
43
+ <!-- field kind="string" id="margins" label="Margin Analysis" -->
44
+ ```value
45
+ As a private company, detailed margin data is not publicly available. However, the AI infrastructure costs are substantial, with significant investment in compute and research talent.
46
+ ```
47
+ <!-- /field -->
48
+
49
+ <!-- /group -->
50
+
51
+ <!-- group id="team" order=0 parallel="deep_research" -->
52
+
53
+ <!-- field kind="string" id="leadership" label="Team & Leadership" -->
54
+ ```value
55
+ CEO Dario Amodei and President Daniela Amodei lead the company. The founding team includes several former OpenAI researchers including Tom Brown (GPT-3 lead), Chris Olah (interpretability), and Sam McCandlish.
56
+ ```
57
+ <!-- /field -->
58
+
59
+ <!-- /group -->
60
+
61
+ <!-- group id="market" order=0 parallel="deep_research" -->
62
+
63
+ <!-- field kind="string" id="tam" label="TAM" -->
64
+ ```value
65
+ The global AI market is projected to reach $1.8 trillion by 2030. The enterprise AI assistant and API market specifically is estimated at $50-100B, growing rapidly.
66
+ ```
67
+ <!-- /field -->
68
+
69
+ <!-- field kind="string" id="competitors" label="Competitors" -->
70
+ ```value
71
+ Key competitors include OpenAI (GPT-4, ChatGPT), Google DeepMind (Gemini), Meta (LLaMA), Mistral, and Cohere. Anthropic differentiates through its safety-first approach and Constitutional AI methodology.
72
+ ```
73
+ <!-- /field -->
74
+
75
+ <!-- /group -->
76
+
77
+ <!-- group id="synthesis" order=10 -->
78
+
79
+ <!-- field kind="string" id="overall" label="Overall Assessment" required=true -->
80
+ ```value
81
+ Anthropic is a leading AI safety company with strong technical credentials and a differentiated approach to AI development. The company has secured significant funding ($7B+) and established partnerships with major cloud providers. Key strengths include the Claude model family, research leadership in interpretability and safety, and a growing enterprise customer base.
82
+ ```
83
+ <!-- /field -->
84
+
85
+ <!-- /group -->
86
+
87
+ <!-- /form -->
88
+
@@ -2,38 +2,43 @@
2
2
  markform:
3
3
  spec: MF/0.1
4
4
  title: Rejection Test Form
5
- description: "Tests type mismatch rejection and recovery behavior"
5
+ description: Tests type mismatch rejection and recovery behavior
6
6
  roles:
7
7
  - agent
8
+ role_instructions:
9
+ user: Fill in the fields you have direct knowledge of.
10
+ agent: Complete the remaining fields based on the provided context.
8
11
  ---
9
- {% form id="rejection_test" title="Rejection Test Form" %}
10
12
 
11
- {% description ref="rejection_test" %}
13
+ <!-- form id="rejection_test" title="Rejection Test Form" -->
14
+
15
+ <!-- description ref="rejection_test" -->
12
16
  A form to test patch rejection scenarios - verifies that type mismatch errors are
13
17
  properly recorded and recovery works.
14
- {% /description %}
15
-
16
- {% group id="fields" title="Test Fields" %}
18
+ <!-- /description -->
17
19
 
18
- {% field kind="table" id="ratings" label="Ratings" required=true minRows=1 maxRows=5 columnIds=["source", "score", "votes"] columnLabels=["Source", "Score", "Votes"] columnTypes=["string", "number", "number"] %}
20
+ <!-- group id="fields" title="Test Fields" -->
19
21
 
22
+ <!-- field kind="table" id="ratings" columnIds=["source", "score", "votes"] columnLabels=["Source", "Score", "Votes"] columnTypes=["string", "number", "number"] label="Ratings" maxRows=5 minRows=1 required=true -->
20
23
  | Source | Score | Votes |
21
- |--------|-------|-------|
24
+ | --- | --- | --- |
22
25
  | IMDB | 85 | 12500 |
23
26
  | Rotten Tomatoes | 92 | 450 |
27
+ <!-- /field -->
24
28
 
25
- {% /field %}
26
-
27
- {% instructions ref="ratings" %}
29
+ <!-- instructions ref="ratings" -->
28
30
  Enter rating data with source name, score (0-100), and vote count.
29
- {% /instructions %}
31
+ <!-- /instructions -->
30
32
 
31
- {% field kind="string" id="title" label="Title" required=true %}
33
+ <!-- field kind="string" id="title" label="Title" required=true -->
32
34
  ```value
33
35
  Test Movie
34
36
  ```
35
- {% /field %}
37
+ <!-- /field -->
38
+
39
+ <!-- /group -->
40
+
41
+ <!-- /form -->
42
+
36
43
 
37
- {% /group %}
38
44
 
39
- {% /form %}
@@ -44,7 +44,7 @@
44
44
  "required": ["ratings", "title"],
45
45
  "x-markform": {
46
46
  "spec": "MF/0.1",
47
- "roles": ["user", "agent"],
47
+ "roles": ["agent"],
48
48
  "roleInstructions": {
49
49
  "user": "Fill in the fields you have direct knowledge of.",
50
50
  "agent": "Complete the remaining fields based on the provided context."
@@ -2,32 +2,34 @@
2
2
  markform:
3
3
  spec: MF/0.1
4
4
  title: Rejection Test Form
5
- description: "Tests type mismatch rejection and recovery behavior"
5
+ description: Tests type mismatch rejection and recovery behavior
6
6
  roles:
7
7
  - agent
8
+ role_instructions:
9
+ user: Fill in the fields you have direct knowledge of.
10
+ agent: Complete the remaining fields based on the provided context.
8
11
  ---
9
- {% form id="rejection_test" title="Rejection Test Form" %}
10
12
 
11
- {% description ref="rejection_test" %}
13
+ <!-- form id="rejection_test" title="Rejection Test Form" -->
14
+
15
+ <!-- description ref="rejection_test" -->
12
16
  A form to test patch rejection scenarios - verifies that type mismatch errors are
13
17
  properly recorded and recovery works.
14
- {% /description %}
18
+ <!-- /description -->
19
+
20
+ <!-- group id="fields" title="Test Fields" -->
15
21
 
16
- {% group id="fields" title="Test Fields" %}
22
+ <!-- field kind="table" id="ratings" columnIds=["source", "score", "votes"] columnLabels=["Source", "Score", "Votes"] columnTypes=["string", "number", "number"] label="Ratings" maxRows=5 minRows=1 required=true --><!-- /field -->
17
23
 
18
- {% field kind="table" id="ratings" label="Ratings" required=true minRows=1 maxRows=5 columnIds=["source", "score", "votes"] columnLabels=["Source", "Score", "Votes"] columnTypes=["string", "number", "number"] %}
24
+ <!-- instructions ref="ratings" -->
25
+ Enter rating data with source name, score (0-100), and vote count.
26
+ <!-- /instructions -->
19
27
 
20
- | Source | Score | Votes |
21
- |--------|-------|-------|
28
+ <!-- field kind="string" id="title" label="Title" required=true --><!-- /field -->
22
29
 
23
- {% /field %}
30
+ <!-- /group -->
24
31
 
25
- {% instructions ref="ratings" %}
26
- Enter rating data with source name, score (0-100), and vote count.
27
- {% /instructions %}
32
+ <!-- /form -->
28
33
 
29
- {% field kind="string" id="title" label="Title" required=true %}{% /field %}
30
34
 
31
- {% /group %}
32
35
 
33
- {% /form %}
@@ -46,7 +46,7 @@ turns:
46
46
  - votes
47
47
  after:
48
48
  required_issue_count: 1
49
- markdown_sha256: b24578a1abb357a8f215de6fe006fa4a15b6388b3bb277526b1f3afd918a46e6
49
+ markdown_sha256: 1c9297f8e24b731881ca8006c9b215738001b05cf58fbce068a3da4eaf326ce0
50
50
  answered_field_count: 1
51
51
  skipped_field_count: 0
52
52
  context:
@@ -113,32 +113,39 @@ turns:
113
113
  ```markdown
114
114
  ---
115
115
  markform:
116
- spec: "MF/0.1"
117
- role_instructions:
118
- user: "Fill in the fields you have direct knowledge of."
119
- agent: "Complete the remaining fields based on the provided context."
116
+ spec: MF/0.1
117
+ title: Rejection Test Form
118
+ description: Tests type mismatch rejection and recovery behavior
119
+ roles:
120
+ - agent
121
+ role_instructions:
122
+ user: Fill in the fields you have direct knowledge of.
123
+ agent: Complete the remaining fields based on the provided context.
120
124
  ---
121
125
 
122
- {% form id="rejection_test" title="Rejection Test Form" %}
126
+ <!-- form id="rejection_test" title="Rejection Test Form" -->
123
127
 
124
- {% description ref="rejection_test" %}
128
+ <!-- description ref="rejection_test" -->
125
129
  A form to test patch rejection scenarios - verifies that type mismatch errors are
126
130
  properly recorded and recovery works.
127
- {% /description %}
131
+ <!-- /description -->
128
132
 
129
- {% group id="fields" title="Test Fields" %}
133
+ <!-- group id="fields" title="Test Fields" -->
130
134
 
131
- {% field kind="table" id="ratings" columnIds=["source", "score", "votes"] columnLabels=["Source", "Score", "Votes"] columnTypes=["string", "number", "number"] label="Ratings" maxRows=5 minRows=1 required=true %}{% /field %}
135
+ <!-- field kind="table" id="ratings" columnIds=["source", "score", "votes"] columnLabels=["Source", "Score", "Votes"] columnTypes=["string", "number", "number"] label="Ratings" maxRows=5 minRows=1 required=true --><!-- /field -->
132
136
 
133
- {% instructions ref="ratings" %}
137
+ <!-- instructions ref="ratings" -->
134
138
  Enter rating data with source name, score (0-100), and vote count.
135
- {% /instructions %}
139
+ <!-- /instructions -->
140
+
141
+ <!-- field kind="string" id="title" label="Title" required=true --><!-- /field -->
142
+
143
+ <!-- /group -->
144
+
145
+ <!-- /form -->
136
146
 
137
- {% field kind="string" id="title" label="Title" required=true %}{% /field %}
138
147
 
139
- {% /group %}
140
148
 
141
- {% /form %}
142
149
 
143
150
  ```
144
151
 
@@ -229,32 +236,39 @@ turns:
229
236
  ```markdown
230
237
  ---
231
238
  markform:
232
- spec: "MF/0.1"
233
- role_instructions:
234
- user: "Fill in the fields you have direct knowledge of."
235
- agent: "Complete the remaining fields based on the provided context."
239
+ spec: MF/0.1
240
+ title: Rejection Test Form
241
+ description: Tests type mismatch rejection and recovery behavior
242
+ roles:
243
+ - agent
244
+ role_instructions:
245
+ user: Fill in the fields you have direct knowledge of.
246
+ agent: Complete the remaining fields based on the provided context.
236
247
  ---
237
248
 
238
- {% form id="rejection_test" title="Rejection Test Form" %}
249
+ <!-- form id="rejection_test" title="Rejection Test Form" -->
239
250
 
240
- {% description ref="rejection_test" %}
251
+ <!-- description ref="rejection_test" -->
241
252
  A form to test patch rejection scenarios - verifies that type mismatch errors are
242
253
  properly recorded and recovery works.
243
- {% /description %}
254
+ <!-- /description -->
244
255
 
245
- {% group id="fields" title="Test Fields" %}
256
+ <!-- group id="fields" title="Test Fields" -->
246
257
 
247
- {% field kind="table" id="ratings" columnIds=["source", "score", "votes"] columnLabels=["Source", "Score", "Votes"] columnTypes=["string", "number", "number"] label="Ratings" maxRows=5 minRows=1 required=true %}{% /field %}
258
+ <!-- field kind="table" id="ratings" columnIds=["source", "score", "votes"] columnLabels=["Source", "Score", "Votes"] columnTypes=["string", "number", "number"] label="Ratings" maxRows=5 minRows=1 required=true --><!-- /field -->
248
259
 
249
- {% instructions ref="ratings" %}
260
+ <!-- instructions ref="ratings" -->
250
261
  Enter rating data with source name, score (0-100), and vote count.
251
- {% /instructions %}
262
+ <!-- /instructions -->
263
+
264
+ <!-- field kind="string" id="title" label="Title" required=true --><!-- /field -->
265
+
266
+ <!-- /group -->
267
+
268
+ <!-- /form -->
252
269
 
253
- {% field kind="string" id="title" label="Title" required=true %}{% /field %}
254
270
 
255
- {% /group %}
256
271
 
257
- {% /form %}
258
272
 
259
273
  ```
260
274
 
@@ -335,7 +349,7 @@ turns:
335
349
  votes: 450
336
350
  after:
337
351
  required_issue_count: 0
338
- markdown_sha256: eabdf7aef8cbd52893d7bc0b03fd3c0b2a21eebf9e16f98af6884509b5101e34
352
+ markdown_sha256: 6c9ac35ce61126e8ff2e7d2bec229952f78ec88d2c4750d65a821e99cc6e69a3
339
353
  answered_field_count: 2
340
354
  skipped_field_count: 0
341
355
  context:
@@ -410,36 +424,43 @@ turns:
410
424
  ```markdown
411
425
  ---
412
426
  markform:
413
- spec: "MF/0.1"
414
- role_instructions:
415
- user: "Fill in the fields you have direct knowledge of."
416
- agent: "Complete the remaining fields based on the provided context."
427
+ spec: MF/0.1
428
+ title: Rejection Test Form
429
+ description: Tests type mismatch rejection and recovery behavior
430
+ roles:
431
+ - agent
432
+ role_instructions:
433
+ user: Fill in the fields you have direct knowledge of.
434
+ agent: Complete the remaining fields based on the provided context.
417
435
  ---
418
436
 
419
- {% form id="rejection_test" title="Rejection Test Form" %}
437
+ <!-- form id="rejection_test" title="Rejection Test Form" -->
420
438
 
421
- {% description ref="rejection_test" %}
439
+ <!-- description ref="rejection_test" -->
422
440
  A form to test patch rejection scenarios - verifies that type mismatch errors are
423
441
  properly recorded and recovery works.
424
- {% /description %}
442
+ <!-- /description -->
425
443
 
426
- {% group id="fields" title="Test Fields" %}
444
+ <!-- group id="fields" title="Test Fields" -->
427
445
 
428
- {% field kind="table" id="ratings" columnIds=["source", "score", "votes"] columnLabels=["Source", "Score", "Votes"] columnTypes=["string", "number", "number"] label="Ratings" maxRows=5 minRows=1 required=true %}{% /field %}
446
+ <!-- field kind="table" id="ratings" columnIds=["source", "score", "votes"] columnLabels=["Source", "Score", "Votes"] columnTypes=["string", "number", "number"] label="Ratings" maxRows=5 minRows=1 required=true --><!-- /field -->
429
447
 
430
- {% instructions ref="ratings" %}
448
+ <!-- instructions ref="ratings" -->
431
449
  Enter rating data with source name, score (0-100), and vote count.
432
- {% /instructions %}
450
+ <!-- /instructions -->
433
451
 
434
- {% field kind="string" id="title" label="Title" required=true %}
452
+ <!-- field kind="string" id="title" label="Title" required=true -->
435
453
  ```value
436
454
  Test Movie
437
455
  ```
438
- {% /field %}
456
+ <!-- /field -->
457
+
458
+ <!-- /group -->
459
+
460
+ <!-- /form -->
461
+
439
462
 
440
- {% /group %}
441
463
 
442
- {% /form %}
443
464
 
444
465
  ```
445
466
 
@@ -532,36 +553,43 @@ turns:
532
553
  ```markdown
533
554
  ---
534
555
  markform:
535
- spec: "MF/0.1"
536
- role_instructions:
537
- user: "Fill in the fields you have direct knowledge of."
538
- agent: "Complete the remaining fields based on the provided context."
556
+ spec: MF/0.1
557
+ title: Rejection Test Form
558
+ description: Tests type mismatch rejection and recovery behavior
559
+ roles:
560
+ - agent
561
+ role_instructions:
562
+ user: Fill in the fields you have direct knowledge of.
563
+ agent: Complete the remaining fields based on the provided context.
539
564
  ---
540
565
 
541
- {% form id="rejection_test" title="Rejection Test Form" %}
566
+ <!-- form id="rejection_test" title="Rejection Test Form" -->
542
567
 
543
- {% description ref="rejection_test" %}
568
+ <!-- description ref="rejection_test" -->
544
569
  A form to test patch rejection scenarios - verifies that type mismatch errors are
545
570
  properly recorded and recovery works.
546
- {% /description %}
571
+ <!-- /description -->
547
572
 
548
- {% group id="fields" title="Test Fields" %}
573
+ <!-- group id="fields" title="Test Fields" -->
549
574
 
550
- {% field kind="table" id="ratings" columnIds=["source", "score", "votes"] columnLabels=["Source", "Score", "Votes"] columnTypes=["string", "number", "number"] label="Ratings" maxRows=5 minRows=1 required=true %}{% /field %}
575
+ <!-- field kind="table" id="ratings" columnIds=["source", "score", "votes"] columnLabels=["Source", "Score", "Votes"] columnTypes=["string", "number", "number"] label="Ratings" maxRows=5 minRows=1 required=true --><!-- /field -->
551
576
 
552
- {% instructions ref="ratings" %}
577
+ <!-- instructions ref="ratings" -->
553
578
  Enter rating data with source name, score (0-100), and vote count.
554
- {% /instructions %}
579
+ <!-- /instructions -->
555
580
 
556
- {% field kind="string" id="title" label="Title" required=true %}
581
+ <!-- field kind="string" id="title" label="Title" required=true -->
557
582
  ```value
558
583
  Test Movie
559
584
  ```
560
- {% /field %}
585
+ <!-- /field -->
586
+
587
+ <!-- /group -->
588
+
589
+ <!-- /form -->
590
+
561
591
 
562
- {% /group %}
563
592
 
564
- {% /form %}
565
593
 
566
594
  ```
567
595