markform 0.1.3 → 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 +81 -28
  2. package/dist/ai-sdk.d.mts +2 -2
  3. package/dist/ai-sdk.mjs +5 -5
  4. package/dist/{apply-00UmzDKL.mjs → apply-C54EMAJ1.mjs} +371 -26
  5. package/dist/bin.mjs +6 -6
  6. package/dist/{cli-D--Lel-e.mjs → cli-BhWhn6L9.mjs} +383 -87
  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 +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-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 +25 -11
  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 -19
  34. package/dist/session-DdAtY2Ni.mjs +0 -4
  35. package/dist/shared-D7gf27Tr.mjs +0 -3
@@ -18,33 +18,33 @@ Fill all fields using interactive prompts - no LLM API key needed.
18
18
 
19
19
  {% field-group id="basic_fields" title="Basic Fields" %}
20
20
 
21
- {% string-field id="name" label="Name" role="user" required=true minLength=2 maxLength=50 %}
21
+ {% field kind="string" id="name" label="Name" role="user" required=true minLength=2 maxLength=50 placeholder="Enter your name" examples=["John Smith", "Jane Doe"] %}
22
22
  ```value
23
23
  Alice Johnson
24
24
  ```
25
- {% /string-field %}
25
+ {% /field %}
26
26
 
27
27
  {% instructions ref="name" %}
28
28
  Enter your full name (2-50 characters).
29
29
  {% /instructions %}
30
30
 
31
- {% string-field id="email" label="Email" role="user" required=true pattern="^[^@]+@[^@]+\\.[^@]+$" %}
31
+ {% field kind="string" id="email" label="Email" role="user" required=true pattern="^[^@]+@[^@]+\\.[^@]+$" placeholder="email@example.com" examples=["alice@company.com", "bob@example.org"] %}
32
32
  ```value
33
33
  alice@example.com
34
34
  ```
35
- {% /string-field %}
35
+ {% /field %}
36
36
 
37
- {% number-field id="age" label="Age" role="user" required=true min=0 max=150 integer=true %}
37
+ {% field kind="number" id="age" label="Age" role="user" required=true min=0 max=150 integer=true placeholder="25" examples=["18", "30", "45"] %}
38
38
  ```value
39
39
  32
40
40
  ```
41
- {% /number-field %}
41
+ {% /field %}
42
42
 
43
- {% number-field id="score" label="Score" role="user" min=0.0 max=100.0 %}
43
+ {% field kind="number" id="score" label="Score" role="user" min=0.0 max=100.0 placeholder="85.5" examples=["75.0", "90.5", "100.0"] %}
44
44
  ```value
45
45
  87.5
46
46
  ```
47
- {% /number-field %}
47
+ {% /field %}
48
48
 
49
49
  {% instructions ref="score" %}
50
50
  Enter a score between 0 and 100 (optional).
@@ -54,13 +54,13 @@ Enter a score between 0 and 100 (optional).
54
54
 
55
55
  {% field-group id="list_fields" title="List Fields" %}
56
56
 
57
- {% string-list id="tags" label="Tags" role="user" required=true minItems=1 maxItems=5 itemMinLength=2 uniqueItems=true %}
57
+ {% field kind="string_list" id="tags" label="Tags" role="user" required=true minItems=1 maxItems=5 itemMinLength=2 uniqueItems=true %}
58
58
  ```value
59
59
  typescript
60
60
  testing
61
61
  forms
62
62
  ```
63
- {% /string-list %}
63
+ {% /field %}
64
64
 
65
65
  {% instructions ref="tags" %}
66
66
  Add 1-5 unique tags (each at least 2 characters).
@@ -70,43 +70,43 @@ Add 1-5 unique tags (each at least 2 characters).
70
70
 
71
71
  {% field-group id="selection_fields" title="Selection Fields" %}
72
72
 
73
- {% single-select id="priority" label="Priority" role="user" required=true %}
73
+ {% field kind="single_select" id="priority" label="Priority" role="user" required=true %}
74
74
  - [ ] Low {% #low %}
75
75
  - [x] Medium {% #medium %}
76
76
  - [ ] High {% #high %}
77
- {% /single-select %}
77
+ {% /field %}
78
78
 
79
- {% multi-select id="categories" label="Categories" role="user" required=true minSelections=1 maxSelections=3 %}
79
+ {% field kind="multi_select" id="categories" label="Categories" role="user" required=true minSelections=1 maxSelections=3 %}
80
80
  - [x] Frontend {% #frontend %}
81
81
  - [x] Backend {% #backend %}
82
82
  - [ ] Database {% #database %}
83
83
  - [ ] DevOps {% #devops %}
84
- {% /multi-select %}
84
+ {% /field %}
85
85
 
86
86
  {% /field-group %}
87
87
 
88
88
  {% field-group id="checkbox_fields" title="Checkbox Fields" %}
89
89
 
90
- {% checkboxes id="tasks_multi" label="Tasks (Multi Mode)" role="user" checkboxMode="multi" required=true %}
90
+ {% field kind="checkboxes" id="tasks_multi" label="Tasks (Multi Mode)" role="user" checkboxMode="multi" required=true %}
91
91
  - [x] Research {% #research %}
92
92
  - [x] Design {% #design %}
93
93
  - [x] Implement {% #implement %}
94
94
  - [-] Test {% #test %}
95
- {% /checkboxes %}
95
+ {% /field %}
96
96
 
97
97
  {% instructions ref="tasks_multi" %}
98
98
  Track task progress. All must reach done or na state to complete.
99
99
  {% /instructions %}
100
100
 
101
- {% checkboxes id="tasks_simple" label="Agreements (Simple Mode)" role="user" checkboxMode="simple" required=true %}
101
+ {% field kind="checkboxes" id="tasks_simple" label="Agreements (Simple Mode)" role="user" checkboxMode="simple" required=true %}
102
102
  - [x] I have read the guidelines {% #read_guidelines %}
103
103
  - [x] I agree to the terms {% #agree_terms %}
104
- {% /checkboxes %}
104
+ {% /field %}
105
105
 
106
- {% checkboxes id="confirmations" label="Confirmations (Explicit Mode)" role="user" checkboxMode="explicit" required=true %}
106
+ {% field kind="checkboxes" id="confirmations" label="Confirmations (Explicit Mode)" role="user" checkboxMode="explicit" required=true %}
107
107
  - [y] Data has been backed up {% #backed_up %}
108
108
  - [n] Stakeholders notified {% #notified %}
109
- {% /checkboxes %}
109
+ {% /field %}
110
110
 
111
111
  {% instructions ref="confirmations" %}
112
112
  Answer yes or no for each confirmation. All must be explicitly answered.
@@ -116,23 +116,23 @@ Answer yes or no for each confirmation. All must be explicitly answered.
116
116
 
117
117
  {% field-group id="url_fields" title="URL Fields" %}
118
118
 
119
- {% url-field id="website" label="Website" role="user" required=true %}
119
+ {% field kind="url" id="website" label="Website" role="user" required=true placeholder="https://example.com" examples=["https://github.com/user/repo", "https://company.com"] %}
120
120
  ```value
121
121
  https://alice.dev
122
122
  ```
123
- {% /url-field %}
123
+ {% /field %}
124
124
 
125
125
  {% instructions ref="website" %}
126
126
  Enter your website URL (must be http or https).
127
127
  {% /instructions %}
128
128
 
129
- {% url-list id="references" label="References" role="user" minItems=1 maxItems=5 uniqueItems=true %}
129
+ {% field kind="url_list" id="references" label="References" role="user" minItems=1 maxItems=5 uniqueItems=true placeholder="https://docs.example.com" examples=["https://wikipedia.org/wiki/Example", "https://docs.github.com/en"] %}
130
130
  ```value
131
131
  https://docs.example.com/guide
132
132
  https://github.com/example/project
133
133
  https://medium.com/article-about-forms
134
134
  ```
135
- {% /url-list %}
135
+ {% /field %}
136
136
 
137
137
  {% instructions ref="references" %}
138
138
  Add 1-5 unique reference URLs for sources or documentation.
@@ -140,30 +140,94 @@ Add 1-5 unique reference URLs for sources or documentation.
140
140
 
141
141
  {% /field-group %}
142
142
 
143
+ {% field-group id="date_fields" title="Date and Year Fields" %}
144
+
145
+ {% field kind="date" id="event_date" label="Event Date" role="user" required=true min="2020-01-01" max="2030-12-31" %}
146
+ ```value
147
+ 2025-06-15
148
+ ```
149
+ {% /field %}
150
+
151
+ {% instructions ref="event_date" %}
152
+ Enter the event date (YYYY-MM-DD format, between 2020 and 2030).
153
+ {% /instructions %}
154
+
155
+ {% field kind="year" id="founded_year" label="Founded Year" role="user" required=true min=1900 max=2030 %}
156
+ ```value
157
+ 2020
158
+ ```
159
+ {% /field %}
160
+
161
+ {% instructions ref="founded_year" %}
162
+ Enter the year the company was founded (1900-2030).
163
+ {% /instructions %}
164
+
165
+ {% /field-group %}
166
+
167
+ {% field-group id="table_fields" title="Table Fields" %}
168
+
169
+ {% field kind="table" id="team_members" label="Team Members" role="user" minRows=0 maxRows=5
170
+ columnIds=["name", "role", "start_date"]
171
+ columnTypes=[{type: "string", required: true}, "string", "date"] %}
172
+ | Name | Role | Start Date |
173
+ |------|------|------------|
174
+ | Alice | Engineer | 2024-01-15 |
175
+ | Bob | Designer | 2023-06-01 |
176
+ {% /field %}
177
+
178
+ {% instructions ref="team_members" %}
179
+ Add team members with their name (required), role, and start date.
180
+ {% /instructions %}
181
+
182
+ {% field kind="table" id="project_tasks" label="Project Tasks" role="user" minRows=0 maxRows=10
183
+ columnIds=["task", "estimate_hrs", "link"]
184
+ columnTypes=[{type: "string", required: true}, "number", "url"] %}
185
+ | Task | Estimate (hrs) | Link |
186
+ |------|----------------|------|
187
+ {% /field %}
188
+
189
+ {% instructions ref="project_tasks" %}
190
+ Optionally add project tasks with estimated hours and reference links.
191
+ {% /instructions %}
192
+
193
+ {% /field-group %}
194
+
143
195
  {% field-group id="optional_fields" title="Optional Fields" %}
144
196
 
145
- {% string-field id="notes" label="Notes" role="user" %}
197
+ {% field kind="string" id="notes" label="Notes" role="user" %}
146
198
  ```value
147
199
  This is a test note.
148
200
  ```
149
- {% /string-field %}
201
+ {% /field %}
150
202
 
151
203
  {% instructions ref="notes" %}
152
204
  Add any relevant notes or observations (optional).
153
205
  {% /instructions %}
154
206
 
155
- {% number-field id="optional_number" label="Optional Number" role="user" %}{% /number-field %}
207
+ {% field kind="number" id="optional_number" label="Optional Number" role="user" %}{% /field %}
156
208
 
157
- {% url-field id="related_url" label="Related URL" role="user" %}
209
+ {% field kind="url" id="related_url" label="Related URL" role="user" %}
158
210
  ```value
159
211
  https://markform.dev/docs
160
212
  ```
161
- {% /url-field %}
213
+ {% /field %}
162
214
 
163
215
  {% instructions ref="related_url" %}
164
216
  Optionally add a URL to related documentation or resources.
165
217
  {% /instructions %}
166
218
 
219
+ {% field kind="date" id="optional_date" label="Optional Date" role="user" %}{% /field %}
220
+
221
+ {% instructions ref="optional_date" %}
222
+ Optionally add a date (YYYY-MM-DD format).
223
+ {% /instructions %}
224
+
225
+ {% field kind="year" id="optional_year" label="Optional Year" role="user" %}{% /field %}
226
+
227
+ {% instructions ref="optional_year" %}
228
+ Optionally add a year.
229
+ {% /instructions %}
230
+
167
231
  {% /field-group %}
168
232
 
169
233
  {% note id="note-review" ref="simple_test" role="user" %}
@@ -18,33 +18,33 @@ Fill all fields using interactive prompts - no LLM API key needed.
18
18
 
19
19
  {% field-group id="basic_fields" title="Basic Fields" %}
20
20
 
21
- {% string-field id="name" label="Name" maxLength=50 minLength=2 required=true role="user" %}
21
+ {% field kind="string" id="name" label="Name" maxLength=50 minLength=2 required=true role="user" placeholder="Enter your name" examples=["John Smith", "Jane Doe"] %}
22
22
  ```value
23
23
  Test User
24
24
  ```
25
- {% /string-field %}
25
+ {% /field %}
26
26
 
27
27
  {% instructions ref="name" %}
28
28
  Enter your full name (2-50 characters).
29
29
  {% /instructions %}
30
30
 
31
- {% string-field id="email" label="Email" pattern="^[^@]+@[^@]+\\.[^@]+$" required=true role="user" %}
31
+ {% field kind="string" id="email" label="Email" pattern="^[^@]+@[^@]+\\.[^@]+$" required=true role="user" placeholder="email@example.com" examples=["alice@company.com", "bob@example.org"] %}
32
32
  ```value
33
33
  test@example.com
34
34
  ```
35
- {% /string-field %}
35
+ {% /field %}
36
36
 
37
- {% number-field id="age" integer=true label="Age" max=150 min=0 required=true role="user" %}
37
+ {% field kind="number" id="age" integer=true label="Age" max=150 min=0 required=true role="user" placeholder="25" examples=["18", "30", "45"] %}
38
38
  ```value
39
39
  25
40
40
  ```
41
- {% /number-field %}
41
+ {% /field %}
42
42
 
43
- {% number-field id="score" label="Score" max=100 min=0 role="user" state="skipped" %}
43
+ {% field kind="number" id="score" label="Score" max=100 min=0 role="user" state="skipped" placeholder="85.5" examples=["75.0", "90.5", "100.0"] %}
44
44
  ```value
45
45
  %SKIP% (Not needed for this test)
46
46
  ```
47
- {% /number-field %}
47
+ {% /field %}
48
48
 
49
49
  {% instructions ref="score" %}
50
50
  Enter a score between 0 and 100 (optional).
@@ -54,12 +54,12 @@ Enter a score between 0 and 100 (optional).
54
54
 
55
55
  {% field-group id="list_fields" title="List Fields" %}
56
56
 
57
- {% string-list id="tags" itemMinLength=2 label="Tags" maxItems=5 minItems=1 required=true role="user" uniqueItems=true %}
57
+ {% field kind="string_list" id="tags" itemMinLength=2 label="Tags" maxItems=5 minItems=1 required=true role="user" uniqueItems=true %}
58
58
  ```value
59
59
  typescript
60
60
  testing
61
61
  ```
62
- {% /string-list %}
62
+ {% /field %}
63
63
 
64
64
  {% instructions ref="tags" %}
65
65
  Add 1-5 unique tags (each at least 2 characters).
@@ -69,43 +69,43 @@ Add 1-5 unique tags (each at least 2 characters).
69
69
 
70
70
  {% field-group id="selection_fields" title="Selection Fields" %}
71
71
 
72
- {% single-select id="priority" label="Priority" required=true role="user" %}
72
+ {% field kind="single_select" id="priority" label="Priority" required=true role="user" %}
73
73
  - [ ] Low {% #low %}
74
74
  - [ ] Medium {% #medium %}
75
75
  - [x] High {% #high %}
76
- {% /single-select %}
76
+ {% /field %}
77
77
 
78
- {% multi-select id="categories" label="Categories" maxSelections=3 minSelections=1 required=true role="user" %}
78
+ {% field kind="multi_select" id="categories" label="Categories" maxSelections=3 minSelections=1 required=true role="user" %}
79
79
  - [x] Frontend {% #frontend %}
80
80
  - [x] Backend {% #backend %}
81
81
  - [ ] Database {% #database %}
82
82
  - [ ] DevOps {% #devops %}
83
- {% /multi-select %}
83
+ {% /field %}
84
84
 
85
85
  {% /field-group %}
86
86
 
87
87
  {% field-group id="checkbox_fields" title="Checkbox Fields" %}
88
88
 
89
- {% checkboxes id="tasks_multi" label="Tasks (Multi Mode)" required=true role="user" %}
89
+ {% field kind="checkboxes" id="tasks_multi" label="Tasks (Multi Mode)" required=true role="user" %}
90
90
  - [x] Research {% #research %}
91
91
  - [x] Design {% #design %}
92
92
  - [x] Implement {% #implement %}
93
93
  - [-] Test {% #test %}
94
- {% /checkboxes %}
94
+ {% /field %}
95
95
 
96
96
  {% instructions ref="tasks_multi" %}
97
97
  Track task progress. All must reach done or na state to complete.
98
98
  {% /instructions %}
99
99
 
100
- {% checkboxes checkboxMode="simple" id="tasks_simple" label="Agreements (Simple Mode)" required=true role="user" %}
100
+ {% field kind="checkboxes" checkboxMode="simple" id="tasks_simple" label="Agreements (Simple Mode)" required=true role="user" %}
101
101
  - [x] I have read the guidelines {% #read_guidelines %}
102
102
  - [x] I agree to the terms {% #agree_terms %}
103
- {% /checkboxes %}
103
+ {% /field %}
104
104
 
105
- {% checkboxes checkboxMode="explicit" id="confirmations" label="Confirmations (Explicit Mode)" required=true role="user" %}
105
+ {% field kind="checkboxes" checkboxMode="explicit" id="confirmations" label="Confirmations (Explicit Mode)" required=true role="user" %}
106
106
  - [y] Data has been backed up {% #backed_up %}
107
107
  - [n] Stakeholders notified {% #notified %}
108
- {% /checkboxes %}
108
+ {% /field %}
109
109
 
110
110
  {% instructions ref="confirmations" %}
111
111
  Answer yes or no for each confirmation. All must be explicitly answered.
@@ -115,21 +115,21 @@ Answer yes or no for each confirmation. All must be explicitly answered.
115
115
 
116
116
  {% field-group id="url_fields" title="URL Fields" %}
117
117
 
118
- {% url-field id="website" label="Website" required=true role="user" %}
118
+ {% field kind="url" id="website" label="Website" required=true role="user" placeholder="https://example.com" examples=["https://github.com/user/repo", "https://company.com"] %}
119
119
  ```value
120
120
  https://test.example.com
121
121
  ```
122
- {% /url-field %}
122
+ {% /field %}
123
123
 
124
124
  {% instructions ref="website" %}
125
125
  Enter your website URL (must be http or https).
126
126
  {% /instructions %}
127
127
 
128
- {% url-list id="references" label="References" maxItems=5 minItems=1 role="user" uniqueItems=true %}
128
+ {% field kind="url_list" id="references" label="References" maxItems=5 minItems=1 role="user" uniqueItems=true placeholder="https://docs.example.com" examples=["https://wikipedia.org/wiki/Example", "https://docs.github.com/en"] %}
129
129
  ```value
130
130
  https://docs.example.com
131
131
  ```
132
- {% /url-list %}
132
+ {% /field %}
133
133
 
134
134
  {% instructions ref="references" %}
135
135
  Add 1-5 unique reference URLs for sources or documentation.
@@ -137,30 +137,92 @@ Add 1-5 unique reference URLs for sources or documentation.
137
137
 
138
138
  {% /field-group %}
139
139
 
140
+ {% field-group id="date_fields" title="Date and Year Fields" %}
141
+
142
+ {% field kind="date" id="event_date" label="Event Date" max="2030-12-31" min="2020-01-01" required=true role="user" %}
143
+ ```value
144
+ 2025-03-15
145
+ ```
146
+ {% /field %}
147
+
148
+ {% instructions ref="event_date" %}
149
+ Enter the event date (YYYY-MM-DD format, between 2020 and 2030).
150
+ {% /instructions %}
151
+
152
+ {% field kind="year" id="founded_year" label="Founded Year" max=2030 min=1900 required=true role="user" %}
153
+ ```value
154
+ 2021
155
+ ```
156
+ {% /field %}
157
+
158
+ {% instructions ref="founded_year" %}
159
+ Enter the year the company was founded (1900-2030).
160
+ {% /instructions %}
161
+
162
+ {% /field-group %}
163
+
164
+ {% field-group id="table_fields" title="Table Fields" %}
165
+
166
+ {% field kind="table" id="team_members" label="Team Members" role="user" minRows=0 maxRows=5 state="skipped"
167
+ columnIds=["name", "role", "start_date"]
168
+ columnTypes=[{type: "string", required: true}, "string", "date"] %}
169
+ | Name | Role | Start Date |
170
+ |------|------|------------|
171
+ {% /field %}
172
+
173
+ {% instructions ref="team_members" %}
174
+ Add team members with their name (required), role, and start date.
175
+ {% /instructions %}
176
+
177
+ {% field kind="table" id="project_tasks" label="Project Tasks" role="user" minRows=0 maxRows=10 state="skipped"
178
+ columnIds=["task", "estimate_hrs", "link"]
179
+ columnTypes=[{type: "string", required: true}, "number", "url"] %}
180
+ | Task | Estimate (hrs) | Link |
181
+ |------|----------------|------|
182
+ {% /field %}
183
+
184
+ {% instructions ref="project_tasks" %}
185
+ Optionally add project tasks with estimated hours and reference links.
186
+ {% /instructions %}
187
+
188
+ {% /field-group %}
189
+
140
190
  {% field-group id="optional_fields" title="Optional Fields" %}
141
191
 
142
- {% string-field id="notes" label="Notes" role="user" state="skipped" %}
192
+ {% field kind="string" id="notes" label="Notes" role="user" state="skipped" %}
143
193
  ```value
144
194
  %SKIP% (No notes required)
145
195
  ```
146
- {% /string-field %}
196
+ {% /field %}
147
197
 
148
198
  {% instructions ref="notes" %}
149
199
  Add any relevant notes or observations (optional).
150
200
  {% /instructions %}
151
201
 
152
- {% number-field id="optional_number" label="Optional Number" role="user" state="skipped" %}{% /number-field %}
202
+ {% field kind="number" id="optional_number" label="Optional Number" role="user" state="skipped" %}{% /field %}
153
203
 
154
- {% url-field id="related_url" label="Related URL" role="user" state="skipped" %}
204
+ {% field kind="url" id="related_url" label="Related URL" role="user" state="skipped" %}
155
205
  ```value
156
206
  %SKIP% (No related URL needed)
157
207
  ```
158
- {% /url-field %}
208
+ {% /field %}
159
209
 
160
210
  {% instructions ref="related_url" %}
161
211
  Optionally add a URL to related documentation or resources.
162
212
  {% /instructions %}
163
213
 
214
+ {% field kind="date" id="optional_date" label="Optional Date" role="user" state="skipped" %}{% /field %}
215
+
216
+ {% instructions ref="optional_date" %}
217
+ Optionally add a date (YYYY-MM-DD format).
218
+ {% /instructions %}
219
+
220
+ {% field kind="year" id="optional_year" label="Optional Year" role="user" state="skipped" %}{% /field %}
221
+
222
+ {% instructions ref="optional_year" %}
223
+ Optionally add a year.
224
+ {% /instructions %}
225
+
164
226
  {% /field-group %}
165
227
 
166
228
  {% note id="note-summary" ref="simple_test" role="user" %}
@@ -39,40 +39,40 @@ turns:
39
39
  message: Required field "Email" is empty
40
40
  severity: required
41
41
  priority: 1
42
- - ref: name
42
+ - ref: event_date
43
43
  scope: field
44
44
  reason: required_missing
45
- message: Required field "Name" is empty
45
+ message: Required field "Event Date" is empty
46
46
  severity: required
47
47
  priority: 1
48
- - ref: priority
48
+ - ref: founded_year
49
49
  scope: field
50
50
  reason: required_missing
51
- message: Required field "Priority" has no selection
51
+ message: Required field "Founded Year" is empty
52
52
  severity: required
53
53
  priority: 1
54
- - ref: tags
54
+ - ref: name
55
55
  scope: field
56
56
  reason: required_missing
57
- message: Required field "Tags" is empty
57
+ message: Required field "Name" is empty
58
58
  severity: required
59
59
  priority: 1
60
- - ref: tasks_multi
60
+ - ref: priority
61
61
  scope: field
62
62
  reason: required_missing
63
- message: All items in "Tasks (Multi Mode)" must be completed
63
+ message: Required field "Priority" has no selection
64
64
  severity: required
65
65
  priority: 1
66
- - ref: tasks_simple
66
+ - ref: tags
67
67
  scope: field
68
68
  reason: required_missing
69
- message: All items in "Agreements (Simple Mode)" must be checked (2 unchecked)
69
+ message: Required field "Tags" is empty
70
70
  severity: required
71
71
  priority: 1
72
- - ref: website
72
+ - ref: tasks_multi
73
73
  scope: field
74
74
  reason: required_missing
75
- message: Required field "Website" is empty
75
+ message: All items in "Tasks (Multi Mode)" must be completed
76
76
  severity: required
77
77
  priority: 1
78
78
  apply:
@@ -93,6 +93,12 @@ turns:
93
93
  - op: set_string
94
94
  field_id: email
95
95
  value: test@example.com
96
+ - op: set_date
97
+ field_id: event_date
98
+ value: 2025-03-15
99
+ - op: set_year
100
+ field_id: founded_year
101
+ value: 2021
96
102
  - op: set_string
97
103
  field_id: name
98
104
  value: Test User
@@ -111,34 +117,56 @@ turns:
111
117
  design: done
112
118
  implement: done
113
119
  test: na
114
- - op: set_checkboxes
115
- field_id: tasks_simple
116
- values:
117
- read_guidelines: done
118
- agree_terms: done
119
- - op: set_url
120
- field_id: website
121
- value: https://test.example.com
122
120
  after:
123
- required_issue_count: 0
124
- markdown_sha256: 62c9aad095c2ea5c2947c308c5e4b3c4cbc677a7e481971871c5091d5ca27b02
121
+ required_issue_count: 2
122
+ markdown_sha256: b5b261b437d0ea9762f342d8a6e1f44ece1b1f0ae0bd4a8709e8ba84625ecae3
125
123
  answered_field_count: 10
126
124
  skipped_field_count: 0
127
125
  - turn: 2
128
126
  inspect:
129
127
  issues:
128
+ - ref: tasks_simple
129
+ scope: field
130
+ reason: required_missing
131
+ message: All items in "Agreements (Simple Mode)" must be checked (2 unchecked)
132
+ severity: required
133
+ priority: 1
134
+ - ref: website
135
+ scope: field
136
+ reason: required_missing
137
+ message: Required field "Website" is empty
138
+ severity: required
139
+ priority: 1
130
140
  - ref: notes
131
141
  scope: field
132
142
  reason: optional_empty
133
143
  message: Optional field has no value
134
144
  severity: recommended
135
145
  priority: 3
146
+ - ref: optional_date
147
+ scope: field
148
+ reason: optional_empty
149
+ message: Optional field has no value
150
+ severity: recommended
151
+ priority: 3
136
152
  - ref: optional_number
137
153
  scope: field
138
154
  reason: optional_empty
139
155
  message: Optional field has no value
140
156
  severity: recommended
141
157
  priority: 3
158
+ - ref: optional_year
159
+ scope: field
160
+ reason: optional_empty
161
+ message: Optional field has no value
162
+ severity: recommended
163
+ priority: 3
164
+ - ref: project_tasks
165
+ scope: field
166
+ reason: optional_empty
167
+ message: Optional field has no value
168
+ severity: recommended
169
+ priority: 3
142
170
  - ref: references
143
171
  scope: field
144
172
  reason: optional_empty
@@ -159,14 +187,34 @@ turns:
159
187
  priority: 3
160
188
  apply:
161
189
  patches:
190
+ - op: set_checkboxes
191
+ field_id: tasks_simple
192
+ values:
193
+ read_guidelines: done
194
+ agree_terms: done
195
+ - op: set_url
196
+ field_id: website
197
+ value: https://test.example.com
162
198
  - op: skip_field
163
199
  field_id: notes
164
200
  role: agent
165
201
  reason: No value in mock form
202
+ - op: skip_field
203
+ field_id: optional_date
204
+ role: agent
205
+ reason: No value in mock form
166
206
  - op: skip_field
167
207
  field_id: optional_number
168
208
  role: agent
169
209
  reason: No value in mock form
210
+ - op: skip_field
211
+ field_id: optional_year
212
+ role: agent
213
+ reason: No value in mock form
214
+ - op: skip_field
215
+ field_id: project_tasks
216
+ role: agent
217
+ reason: No value in mock form
170
218
  - op: set_url_list
171
219
  field_id: references
172
220
  items:
@@ -181,9 +229,29 @@ turns:
181
229
  reason: No value in mock form
182
230
  after:
183
231
  required_issue_count: 0
184
- markdown_sha256: 5ca306e53bdb0213b0558f6132c7a5af491c40c8765f25bc7047efa0478b7876
185
- answered_field_count: 11
186
- skipped_field_count: 4
232
+ markdown_sha256: 943a9dac5094e295b53bd4cf38733fcff32e4311b6e308d5904199f4898d4f5d
233
+ answered_field_count: 13
234
+ skipped_field_count: 7
235
+ - turn: 3
236
+ inspect:
237
+ issues:
238
+ - ref: team_members
239
+ scope: field
240
+ reason: optional_empty
241
+ message: Optional field has no value
242
+ severity: recommended
243
+ priority: 3
244
+ apply:
245
+ patches:
246
+ - op: skip_field
247
+ field_id: team_members
248
+ role: agent
249
+ reason: No value in mock form
250
+ after:
251
+ required_issue_count: 0
252
+ markdown_sha256: e19d2e529bceab1dc64310fe2a75d70d062fa060230d7109eb541766c0a0f4e5
253
+ answered_field_count: 13
254
+ skipped_field_count: 8
187
255
  final:
188
256
  expect_complete: true
189
257
  expected_completed_form: simple-skipped-filled.form.md