markform 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/README.md +97 -42
  2. package/dist/ai-sdk.d.mts +2 -2
  3. package/dist/ai-sdk.mjs +5 -5
  4. package/dist/{apply-BfAGTHMh.mjs → apply-C54EMAJ1.mjs} +383 -26
  5. package/dist/bin.mjs +6 -6
  6. package/dist/{cli-B3NVm6zL.mjs → cli-BhWhn6L9.mjs} +456 -141
  7. package/dist/cli.mjs +6 -6
  8. package/dist/{coreTypes-BXhhz9Iq.d.mts → coreTypes-cbNTYAcb.d.mts} +1878 -325
  9. package/dist/{coreTypes-Dful87E0.mjs → coreTypes-pyctKRgc.mjs} +79 -5
  10. package/dist/index.d.mts +146 -9
  11. package/dist/index.mjs +5 -5
  12. package/dist/session-B_stoXQn.mjs +4 -0
  13. package/dist/{session-Bqnwi9wp.mjs → session-uF0e6m6k.mjs} +9 -5
  14. package/dist/{shared-N_s1M-_K.mjs → shared-BqPnYXrn.mjs} +82 -1
  15. package/dist/shared-CZsyShck.mjs +3 -0
  16. package/dist/{src-BXRkGFpG.mjs → src-BNh7Cx9P.mjs} +801 -121
  17. package/docs/markform-apis.md +194 -0
  18. package/{DOCS.md → docs/markform-reference.md} +111 -50
  19. package/{SPEC.md → docs/markform-spec.md} +342 -91
  20. package/examples/celebrity-deep-research/celebrity-deep-research.form.md +196 -141
  21. package/examples/earnings-analysis/earnings-analysis.form.md +236 -226
  22. package/examples/movie-research/movie-research-basic.form.md +25 -21
  23. package/examples/movie-research/movie-research-deep.form.md +74 -62
  24. package/examples/movie-research/movie-research-minimal.form.md +29 -34
  25. package/examples/simple/simple-mock-filled.form.md +93 -29
  26. package/examples/simple/simple-skipped-filled.form.md +91 -29
  27. package/examples/simple/simple-with-skips.session.yaml +93 -25
  28. package/examples/simple/simple.form.md +74 -20
  29. package/examples/simple/simple.session.yaml +98 -25
  30. package/examples/startup-deep-research/startup-deep-research.form.md +108 -81
  31. package/examples/startup-research/startup-research-mock-filled.form.md +43 -43
  32. package/examples/startup-research/startup-research.form.md +24 -24
  33. package/package.json +18 -27
  34. package/dist/session-DdAtY2Ni.mjs +0 -4
  35. package/dist/shared-D7gf27Tr.mjs +0 -3
@@ -2,7 +2,7 @@
2
2
  markform:
3
3
  spec: MF/0.1
4
4
  title: Movie Research (Minimal)
5
- description: Quick movie lookup - just the essentials (title, year, rating, summary).
5
+ description: Quick movie lookup with just the essentials (title, year, ratings, summary).
6
6
  roles:
7
7
  - user
8
8
  - agent
@@ -11,62 +11,57 @@ markform:
11
11
  agent: |
12
12
  Quickly identify the movie and fill in basic info from IMDB.
13
13
  This is a minimal lookup - just get the core facts.
14
- harness_config:
15
- max_issues_per_turn: 3
16
- max_patches_per_turn: 8
17
14
  ---
18
-
19
15
  {% form id="movie_research_minimal" title="Movie Research (Minimal)" %}
20
16
 
21
- {% description ref="movie_research_minimal" %}
22
- A quick movie lookup for essential info: title, year, rating, and a brief summary.
23
- {% /description %}
17
+ ## Movie Research Example
24
18
 
25
19
  {% field-group id="movie_input" title="Movie Identification" %}
26
20
 
27
- {% 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"`).*\]
28
22
 
29
- {% instructions ref="movie" %}
30
- Enter the movie title (add year or details if needed for disambiguation).
31
- {% /instructions %}
23
+ {% field kind="string" id="movie" label="Movie" role="user" required=true minLength=1 maxLength=300 %}{% /field %}
24
+ {% instructions ref="movie" %}Enter the movie title (add year or details for disambiguation).{% /instructions %}
32
25
 
33
26
  {% /field-group %}
34
27
 
35
- {% field-group id="title_identification" title="Title Identification" %}
28
+ ## About the Movie
36
29
 
37
- {% string-field id="full_title" label="Full Title" role="agent" required=true %}{% /string-field %}
30
+ {% field-group id="about_the_movie" title="About the Movie" %}
38
31
 
39
- {% instructions ref="full_title" %}
40
- Official title including subtitle if any.
41
- {% /instructions %}
32
+ **Title:**
42
33
 
43
- {% number-field id="year" label="Release Year" role="agent" required=true min=1888 max=2030 %}{% /number-field %}
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 %}
44
36
 
45
- {% /field-group %}
37
+ **Release year:**
46
38
 
47
- {% field-group id="primary_sources" title="Source" %}
39
+ {% field kind="number" id="year" label="Release Year" role="agent" required=true min=1888 max=2030 %}{% /field %}
48
40
 
49
- {% url-field id="imdb_url" label="IMDB URL" role="agent" required=true %}{% /url-field %}
41
+ **IMDB:**
50
42
 
51
- {% /field-group %}
43
+ {% field kind="url" id="imdb_url" label="IMDB URL" role="agent" required=true %}{% /field %}
52
44
 
53
- {% field-group id="ratings" title="Rating" %}
45
+ **MPAA rating:**
54
46
 
55
- {% number-field id="imdb_rating" label="IMDB Rating" role="agent" min=1.0 max=10.0 %}{% /number-field %}
47
+ {% field kind="single_select" id="mpaa_rating" label="MPAA Rating" role="agent" %}
48
+ - [ ] G {% #g %}
49
+ - [ ] PG {% #pg %}
50
+ - [ ] PG-13 {% #pg_13 %}
51
+ - [ ] R {% #r %}
52
+ - [ ] NC-17 {% #nc_17 %}
53
+ - [ ] NR/Unrated {% #nr %}
54
+ {% /field %}
56
55
 
57
- {% instructions ref="imdb_rating" %}
58
- IMDB user rating (1.0-10.0 scale).
59
- {% /instructions %}
60
-
61
- {% /field-group %}
56
+ **IMDB rating:**
62
57
 
63
- {% field-group id="summary" title="Summary" %}
58
+ {% field kind="number" id="imdb_rating" label="IMDB Rating" role="agent" min=1.0 max=10.0 %}{% /field %}
59
+ {% instructions ref="imdb_rating" %}IMDB user rating (1.0-10.0 scale).{% /instructions %}
64
60
 
65
- {% string-field id="logline" label="One-Line Summary" role="agent" maxLength=300 %}{% /string-field %}
61
+ **Summary:**
66
62
 
67
- {% instructions ref="logline" %}
68
- Brief plot summary in 1-2 sentences, no spoilers.
69
- {% /instructions %}
63
+ {% field kind="string" id="logline" label="One-Line Summary" role="agent" maxLength=300 %}{% /field %}
64
+ {% instructions ref="logline" %}Brief plot summary in 1-2 sentences, no spoilers.{% /instructions %}
70
65
 
71
66
  {% /field-group %}
72
67
 
@@ -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" %}