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.
- package/README.md +81 -28
- package/dist/ai-sdk.d.mts +2 -2
- package/dist/ai-sdk.mjs +5 -5
- package/dist/{apply-00UmzDKL.mjs → apply-C54EMAJ1.mjs} +371 -26
- package/dist/bin.mjs +6 -6
- package/dist/{cli-D--Lel-e.mjs → cli-BhWhn6L9.mjs} +383 -87
- package/dist/cli.mjs +6 -6
- package/dist/{coreTypes-BXhhz9Iq.d.mts → coreTypes-cbNTYAcb.d.mts} +1878 -325
- package/dist/{coreTypes-Dful87E0.mjs → coreTypes-pyctKRgc.mjs} +79 -5
- package/dist/index.d.mts +142 -5
- package/dist/index.mjs +5 -5
- package/dist/session-B_stoXQn.mjs +4 -0
- package/dist/{session-Bqnwi9wp.mjs → session-uF0e6m6k.mjs} +9 -5
- package/dist/{shared-N_s1M-_K.mjs → shared-BqPnYXrn.mjs} +82 -1
- package/dist/shared-CZsyShck.mjs +3 -0
- package/dist/{src-Dm8jZ5dl.mjs → src-BNh7Cx9P.mjs} +801 -121
- package/docs/markform-apis.md +194 -0
- package/{DOCS.md → docs/markform-reference.md} +111 -50
- package/{SPEC.md → docs/markform-spec.md} +342 -91
- package/examples/celebrity-deep-research/celebrity-deep-research.form.md +196 -141
- package/examples/earnings-analysis/earnings-analysis.form.md +236 -226
- package/examples/movie-research/movie-research-basic.form.md +25 -21
- package/examples/movie-research/movie-research-deep.form.md +74 -62
- package/examples/movie-research/movie-research-minimal.form.md +25 -11
- package/examples/simple/simple-mock-filled.form.md +93 -29
- package/examples/simple/simple-skipped-filled.form.md +91 -29
- package/examples/simple/simple-with-skips.session.yaml +93 -25
- package/examples/simple/simple.form.md +74 -20
- package/examples/simple/simple.session.yaml +98 -25
- package/examples/startup-deep-research/startup-deep-research.form.md +108 -81
- package/examples/startup-research/startup-research-mock-filled.form.md +43 -43
- package/examples/startup-research/startup-research.form.md +24 -24
- package/package.json +18 -19
- package/dist/session-DdAtY2Ni.mjs +0 -4
- package/dist/shared-D7gf27Tr.mjs +0 -3
|
@@ -18,17 +18,17 @@ 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
|
-
{%
|
|
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"] %}{% /field %}
|
|
22
22
|
|
|
23
23
|
{% instructions ref="name" %}
|
|
24
24
|
Enter your full name (2-50 characters).
|
|
25
25
|
{% /instructions %}
|
|
26
26
|
|
|
27
|
-
{%
|
|
27
|
+
{% field kind="string" id="email" label="Email" role="user" required=true pattern="^[^@]+@[^@]+\\.[^@]+$" placeholder="email@example.com" examples=["alice@company.com", "bob@example.org"] %}{% /field %}
|
|
28
28
|
|
|
29
|
-
{%
|
|
29
|
+
{% field kind="number" id="age" label="Age" role="user" required=true min=0 max=150 integer=true placeholder="25" examples=["18", "30", "45"] %}{% /field %}
|
|
30
30
|
|
|
31
|
-
{%
|
|
31
|
+
{% 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"] %}{% /field %}
|
|
32
32
|
|
|
33
33
|
{% instructions ref="score" %}
|
|
34
34
|
Enter a score between 0 and 100 (optional).
|
|
@@ -38,7 +38,7 @@ Enter a score between 0 and 100 (optional).
|
|
|
38
38
|
|
|
39
39
|
{% field-group id="list_fields" title="List Fields" %}
|
|
40
40
|
|
|
41
|
-
{%
|
|
41
|
+
{% field kind="string_list" id="tags" label="Tags" role="user" required=true minItems=1 maxItems=5 itemMinLength=2 uniqueItems=true %}{% /field %}
|
|
42
42
|
|
|
43
43
|
{% instructions ref="tags" %}
|
|
44
44
|
Add 1-5 unique tags (each at least 2 characters).
|
|
@@ -48,43 +48,43 @@ Add 1-5 unique tags (each at least 2 characters).
|
|
|
48
48
|
|
|
49
49
|
{% field-group id="selection_fields" title="Selection Fields" %}
|
|
50
50
|
|
|
51
|
-
{%
|
|
51
|
+
{% field kind="single_select" id="priority" label="Priority" role="user" required=true %}
|
|
52
52
|
- [ ] Low {% #low %}
|
|
53
53
|
- [ ] Medium {% #medium %}
|
|
54
54
|
- [ ] High {% #high %}
|
|
55
|
-
{% /
|
|
55
|
+
{% /field %}
|
|
56
56
|
|
|
57
|
-
{%
|
|
57
|
+
{% field kind="multi_select" id="categories" label="Categories" role="user" required=true minSelections=1 maxSelections=3 %}
|
|
58
58
|
- [ ] Frontend {% #frontend %}
|
|
59
59
|
- [ ] Backend {% #backend %}
|
|
60
60
|
- [ ] Database {% #database %}
|
|
61
61
|
- [ ] DevOps {% #devops %}
|
|
62
|
-
{% /
|
|
62
|
+
{% /field %}
|
|
63
63
|
|
|
64
64
|
{% /field-group %}
|
|
65
65
|
|
|
66
66
|
{% field-group id="checkbox_fields" title="Checkbox Fields" %}
|
|
67
67
|
|
|
68
|
-
{% checkboxes id="tasks_multi" label="Tasks (Multi Mode)" role="user" checkboxMode="multi" required=true %}
|
|
68
|
+
{% field kind="checkboxes" id="tasks_multi" label="Tasks (Multi Mode)" role="user" checkboxMode="multi" required=true %}
|
|
69
69
|
- [ ] Research {% #research %}
|
|
70
70
|
- [ ] Design {% #design %}
|
|
71
71
|
- [ ] Implement {% #implement %}
|
|
72
72
|
- [ ] Test {% #test %}
|
|
73
|
-
{% /
|
|
73
|
+
{% /field %}
|
|
74
74
|
|
|
75
75
|
{% instructions ref="tasks_multi" %}
|
|
76
76
|
Track task progress. All must reach done or na state to complete.
|
|
77
77
|
{% /instructions %}
|
|
78
78
|
|
|
79
|
-
{% checkboxes id="tasks_simple" label="Agreements (Simple Mode)" role="user" checkboxMode="simple" required=true %}
|
|
79
|
+
{% field kind="checkboxes" id="tasks_simple" label="Agreements (Simple Mode)" role="user" checkboxMode="simple" required=true %}
|
|
80
80
|
- [ ] I have read the guidelines {% #read_guidelines %}
|
|
81
81
|
- [ ] I agree to the terms {% #agree_terms %}
|
|
82
|
-
{% /
|
|
82
|
+
{% /field %}
|
|
83
83
|
|
|
84
|
-
{% checkboxes id="confirmations" label="Confirmations (Explicit Mode)" role="user" checkboxMode="explicit" required=true %}
|
|
84
|
+
{% field kind="checkboxes" id="confirmations" label="Confirmations (Explicit Mode)" role="user" checkboxMode="explicit" required=true %}
|
|
85
85
|
- [ ] Data has been backed up {% #backed_up %}
|
|
86
86
|
- [ ] Stakeholders notified {% #notified %}
|
|
87
|
-
{% /
|
|
87
|
+
{% /field %}
|
|
88
88
|
|
|
89
89
|
{% instructions ref="confirmations" %}
|
|
90
90
|
Answer yes or no for each confirmation. All must be explicitly answered.
|
|
@@ -94,13 +94,13 @@ Answer yes or no for each confirmation. All must be explicitly answered.
|
|
|
94
94
|
|
|
95
95
|
{% field-group id="url_fields" title="URL Fields" %}
|
|
96
96
|
|
|
97
|
-
{%
|
|
97
|
+
{% field kind="url" id="website" label="Website" role="user" required=true placeholder="https://example.com" examples=["https://github.com/user/repo", "https://company.com"] %}{% /field %}
|
|
98
98
|
|
|
99
99
|
{% instructions ref="website" %}
|
|
100
100
|
Enter your website URL (must be http or https).
|
|
101
101
|
{% /instructions %}
|
|
102
102
|
|
|
103
|
-
{%
|
|
103
|
+
{% 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"] %}{% /field %}
|
|
104
104
|
|
|
105
105
|
{% instructions ref="references" %}
|
|
106
106
|
Add 1-5 unique reference URLs for sources or documentation.
|
|
@@ -108,22 +108,76 @@ Add 1-5 unique reference URLs for sources or documentation.
|
|
|
108
108
|
|
|
109
109
|
{% /field-group %}
|
|
110
110
|
|
|
111
|
+
{% field-group id="date_fields" title="Date and Year Fields" %}
|
|
112
|
+
|
|
113
|
+
{% field kind="date" id="event_date" label="Event Date" role="user" required=true min="2020-01-01" max="2030-12-31" %}{% /field %}
|
|
114
|
+
|
|
115
|
+
{% instructions ref="event_date" %}
|
|
116
|
+
Enter the event date (YYYY-MM-DD format, between 2020 and 2030).
|
|
117
|
+
{% /instructions %}
|
|
118
|
+
|
|
119
|
+
{% field kind="year" id="founded_year" label="Founded Year" role="user" required=true min=1900 max=2030 %}{% /field %}
|
|
120
|
+
|
|
121
|
+
{% instructions ref="founded_year" %}
|
|
122
|
+
Enter the year the company was founded (1900-2030).
|
|
123
|
+
{% /instructions %}
|
|
124
|
+
|
|
125
|
+
{% /field-group %}
|
|
126
|
+
|
|
127
|
+
{% field-group id="table_fields" title="Table Fields" %}
|
|
128
|
+
|
|
129
|
+
{% field kind="table" id="team_members" label="Team Members" role="user" minRows=0 maxRows=5
|
|
130
|
+
columnIds=["name", "role", "start_date"]
|
|
131
|
+
columnTypes=[{type: "string", required: true}, "string", "date"] %}
|
|
132
|
+
| Name | Role | Start Date |
|
|
133
|
+
|------|------|------------|
|
|
134
|
+
{% /field %}
|
|
135
|
+
|
|
136
|
+
{% instructions ref="team_members" %}
|
|
137
|
+
Add team members with their name (required), role, and start date.
|
|
138
|
+
{% /instructions %}
|
|
139
|
+
|
|
140
|
+
{% field kind="table" id="project_tasks" label="Project Tasks" role="user" minRows=0 maxRows=10
|
|
141
|
+
columnIds=["task", "estimate_hrs", "link"]
|
|
142
|
+
columnTypes=[{type: "string", required: true}, "number", "url"] %}
|
|
143
|
+
| Task | Estimate (hrs) | Link |
|
|
144
|
+
|------|----------------|------|
|
|
145
|
+
{% /field %}
|
|
146
|
+
|
|
147
|
+
{% instructions ref="project_tasks" %}
|
|
148
|
+
Optionally add project tasks with estimated hours and reference links.
|
|
149
|
+
{% /instructions %}
|
|
150
|
+
|
|
151
|
+
{% /field-group %}
|
|
152
|
+
|
|
111
153
|
{% field-group id="optional_fields" title="Optional Fields" %}
|
|
112
154
|
|
|
113
|
-
{%
|
|
155
|
+
{% field kind="string" id="notes" label="Notes" role="user" %}{% /field %}
|
|
114
156
|
|
|
115
157
|
{% instructions ref="notes" %}
|
|
116
158
|
Add any relevant notes or observations (optional).
|
|
117
159
|
{% /instructions %}
|
|
118
160
|
|
|
119
|
-
{%
|
|
161
|
+
{% field kind="number" id="optional_number" label="Optional Number" role="user" %}{% /field %}
|
|
120
162
|
|
|
121
|
-
{%
|
|
163
|
+
{% field kind="url" id="related_url" label="Related URL" role="user" %}{% /field %}
|
|
122
164
|
|
|
123
165
|
{% instructions ref="related_url" %}
|
|
124
166
|
Optionally add a URL to related documentation or resources.
|
|
125
167
|
{% /instructions %}
|
|
126
168
|
|
|
169
|
+
{% field kind="date" id="optional_date" label="Optional Date" role="user" %}{% /field %}
|
|
170
|
+
|
|
171
|
+
{% instructions ref="optional_date" %}
|
|
172
|
+
Optionally add a date (YYYY-MM-DD format).
|
|
173
|
+
{% /instructions %}
|
|
174
|
+
|
|
175
|
+
{% field kind="year" id="optional_year" label="Optional Year" role="user" %}{% /field %}
|
|
176
|
+
|
|
177
|
+
{% instructions ref="optional_year" %}
|
|
178
|
+
Optionally add a year.
|
|
179
|
+
{% /instructions %}
|
|
180
|
+
|
|
127
181
|
{% /field-group %}
|
|
128
182
|
|
|
129
183
|
{% /form %}
|
|
@@ -39,40 +39,40 @@ turns:
|
|
|
39
39
|
message: Required field "Email" is empty
|
|
40
40
|
severity: required
|
|
41
41
|
priority: 1
|
|
42
|
-
- ref:
|
|
42
|
+
- ref: event_date
|
|
43
43
|
scope: field
|
|
44
44
|
reason: required_missing
|
|
45
|
-
message: Required field "
|
|
45
|
+
message: Required field "Event Date" is empty
|
|
46
46
|
severity: required
|
|
47
47
|
priority: 1
|
|
48
|
-
- ref:
|
|
48
|
+
- ref: founded_year
|
|
49
49
|
scope: field
|
|
50
50
|
reason: required_missing
|
|
51
|
-
message: Required field "
|
|
51
|
+
message: Required field "Founded Year" is empty
|
|
52
52
|
severity: required
|
|
53
53
|
priority: 1
|
|
54
|
-
- ref:
|
|
54
|
+
- ref: name
|
|
55
55
|
scope: field
|
|
56
56
|
reason: required_missing
|
|
57
|
-
message: Required field "
|
|
57
|
+
message: Required field "Name" is empty
|
|
58
58
|
severity: required
|
|
59
59
|
priority: 1
|
|
60
|
-
- ref:
|
|
60
|
+
- ref: priority
|
|
61
61
|
scope: field
|
|
62
62
|
reason: required_missing
|
|
63
|
-
message:
|
|
63
|
+
message: Required field "Priority" has no selection
|
|
64
64
|
severity: required
|
|
65
65
|
priority: 1
|
|
66
|
-
- ref:
|
|
66
|
+
- ref: tags
|
|
67
67
|
scope: field
|
|
68
68
|
reason: required_missing
|
|
69
|
-
message:
|
|
69
|
+
message: Required field "Tags" is empty
|
|
70
70
|
severity: required
|
|
71
71
|
priority: 1
|
|
72
|
-
- ref:
|
|
72
|
+
- ref: tasks_multi
|
|
73
73
|
scope: field
|
|
74
74
|
reason: required_missing
|
|
75
|
-
message:
|
|
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: alice@example.com
|
|
96
|
+
- op: set_date
|
|
97
|
+
field_id: event_date
|
|
98
|
+
value: 2025-06-15
|
|
99
|
+
- op: set_year
|
|
100
|
+
field_id: founded_year
|
|
101
|
+
value: 2020
|
|
96
102
|
- op: set_string
|
|
97
103
|
field_id: name
|
|
98
104
|
value: Alice Johnson
|
|
@@ -112,34 +118,56 @@ turns:
|
|
|
112
118
|
design: done
|
|
113
119
|
implement: done
|
|
114
120
|
test: na
|
|
115
|
-
- op: set_checkboxes
|
|
116
|
-
field_id: tasks_simple
|
|
117
|
-
values:
|
|
118
|
-
read_guidelines: done
|
|
119
|
-
agree_terms: done
|
|
120
|
-
- op: set_url
|
|
121
|
-
field_id: website
|
|
122
|
-
value: https://alice.dev
|
|
123
121
|
after:
|
|
124
|
-
required_issue_count:
|
|
125
|
-
markdown_sha256:
|
|
122
|
+
required_issue_count: 2
|
|
123
|
+
markdown_sha256: 7fc247f84777187aa022f4bf0cb025c04e6ee8e73bb413ad4c728047e8cbed9b
|
|
126
124
|
answered_field_count: 10
|
|
127
125
|
skipped_field_count: 0
|
|
128
126
|
- turn: 2
|
|
129
127
|
inspect:
|
|
130
128
|
issues:
|
|
129
|
+
- ref: tasks_simple
|
|
130
|
+
scope: field
|
|
131
|
+
reason: required_missing
|
|
132
|
+
message: All items in "Agreements (Simple Mode)" must be checked (2 unchecked)
|
|
133
|
+
severity: required
|
|
134
|
+
priority: 1
|
|
135
|
+
- ref: website
|
|
136
|
+
scope: field
|
|
137
|
+
reason: required_missing
|
|
138
|
+
message: Required field "Website" is empty
|
|
139
|
+
severity: required
|
|
140
|
+
priority: 1
|
|
131
141
|
- ref: notes
|
|
132
142
|
scope: field
|
|
133
143
|
reason: optional_empty
|
|
134
144
|
message: Optional field has no value
|
|
135
145
|
severity: recommended
|
|
136
146
|
priority: 3
|
|
147
|
+
- ref: optional_date
|
|
148
|
+
scope: field
|
|
149
|
+
reason: optional_empty
|
|
150
|
+
message: Optional field has no value
|
|
151
|
+
severity: recommended
|
|
152
|
+
priority: 3
|
|
137
153
|
- ref: optional_number
|
|
138
154
|
scope: field
|
|
139
155
|
reason: optional_empty
|
|
140
156
|
message: Optional field has no value
|
|
141
157
|
severity: recommended
|
|
142
158
|
priority: 3
|
|
159
|
+
- ref: optional_year
|
|
160
|
+
scope: field
|
|
161
|
+
reason: optional_empty
|
|
162
|
+
message: Optional field has no value
|
|
163
|
+
severity: recommended
|
|
164
|
+
priority: 3
|
|
165
|
+
- ref: project_tasks
|
|
166
|
+
scope: field
|
|
167
|
+
reason: optional_empty
|
|
168
|
+
message: Optional field has no value
|
|
169
|
+
severity: recommended
|
|
170
|
+
priority: 3
|
|
143
171
|
- ref: references
|
|
144
172
|
scope: field
|
|
145
173
|
reason: optional_empty
|
|
@@ -160,13 +188,33 @@ turns:
|
|
|
160
188
|
priority: 3
|
|
161
189
|
apply:
|
|
162
190
|
patches:
|
|
191
|
+
- op: set_checkboxes
|
|
192
|
+
field_id: tasks_simple
|
|
193
|
+
values:
|
|
194
|
+
read_guidelines: done
|
|
195
|
+
agree_terms: done
|
|
196
|
+
- op: set_url
|
|
197
|
+
field_id: website
|
|
198
|
+
value: https://alice.dev
|
|
163
199
|
- op: set_string
|
|
164
200
|
field_id: notes
|
|
165
201
|
value: This is a test note.
|
|
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,34 @@ turns:
|
|
|
181
229
|
value: 87.5
|
|
182
230
|
after:
|
|
183
231
|
required_issue_count: 0
|
|
184
|
-
markdown_sha256:
|
|
185
|
-
answered_field_count:
|
|
186
|
-
skipped_field_count:
|
|
232
|
+
markdown_sha256: 8c529f28855c70aa19516b8a3a92c65257ac345c6d69a012eb2a7a23924e0df6
|
|
233
|
+
answered_field_count: 16
|
|
234
|
+
skipped_field_count: 4
|
|
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: set_table
|
|
247
|
+
field_id: team_members
|
|
248
|
+
rows:
|
|
249
|
+
- name: Alice
|
|
250
|
+
role: Engineer
|
|
251
|
+
start_date: 2024-01-15
|
|
252
|
+
- name: Bob
|
|
253
|
+
role: Designer
|
|
254
|
+
start_date: 2023-06-01
|
|
255
|
+
after:
|
|
256
|
+
required_issue_count: 0
|
|
257
|
+
markdown_sha256: f6d569e6129fbba845a0758cf88ffc1d28ead5762e9993ad7743c3ad62443a2f
|
|
258
|
+
answered_field_count: 17
|
|
259
|
+
skipped_field_count: 4
|
|
187
260
|
final:
|
|
188
261
|
expect_complete: true
|
|
189
262
|
expected_completed_form: simple-mock-filled.form.md
|