markform 0.1.7 → 0.1.8
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 +420 -198
- package/dist/ai-sdk.d.mts +1 -1
- package/dist/ai-sdk.mjs +2 -2
- package/dist/{apply-g23rRn7p.mjs → apply-BUU2QcJ2.mjs} +102 -20
- package/dist/bin.mjs +1 -1
- package/dist/{cli-Bqlm-WWw.mjs → cli-BZh25bvy.mjs} +26 -8
- package/dist/cli.mjs +1 -1
- package/dist/{coreTypes-DCvD7feM.d.mts → coreTypes-BSPJ9H27.d.mts} +51 -1
- package/dist/{coreTypes-__Cwxz5q.mjs → coreTypes-DJtu8OOp.mjs} +16 -1
- package/dist/index.d.mts +10 -5
- package/dist/index.mjs +4 -4
- package/dist/{session-CgCNni0e.mjs → session-CmHdAPyg.mjs} +1 -1
- package/dist/{session-DruaYPZ1.mjs → session-DSTNiHza.mjs} +1 -1
- package/dist/{src-BiuxbzF3.mjs → src-kUggXhN1.mjs} +115 -29
- package/docs/markform-apis.md +30 -1
- package/docs/markform-reference.md +65 -6
- package/examples/movie-research/movie-research-deep.form.md +15 -56
- package/examples/movie-research/movie-research-demo.form.md +25 -34
- package/examples/rejection-test/rejection-test-mock-filled.form.md +41 -0
- package/examples/rejection-test/rejection-test-mock-filled.report.md +15 -0
- package/examples/rejection-test/rejection-test-mock-filled.schema.json +59 -0
- package/examples/rejection-test/rejection-test-mock-filled.yml +13 -0
- package/examples/rejection-test/rejection-test.form.md +35 -0
- package/examples/rejection-test/rejection-test.session.yaml +88 -0
- package/examples/simple/simple-mock-filled.report.md +96 -0
- package/examples/simple/simple-mock-filled.schema.json +374 -0
- package/examples/simple/simple-mock-filled.yml +87 -0
- package/examples/simple/simple-skipped-filled.report.md +90 -0
- package/examples/simple/simple-skipped-filled.schema.json +374 -0
- package/examples/simple/simple-skipped-filled.yml +77 -0
- package/examples/simple/simple-with-skips.session.yaml +3 -3
- package/examples/simple/simple.session.yaml +3 -3
- package/package.json +1 -1
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Rejection Test Form
|
|
2
|
+
|
|
3
|
+
A form to test patch rejection scenarios - verifies that type mismatch
|
|
4
|
+
errors are properly recorded and recovery works.
|
|
5
|
+
|
|
6
|
+
## Test Fields
|
|
7
|
+
|
|
8
|
+
**Ratings:**
|
|
9
|
+
| Source | Score | Votes |
|
|
10
|
+
| --- | --- | --- |
|
|
11
|
+
| IMDB | 85 | 12500 |
|
|
12
|
+
| Rotten Tomatoes | 92 | 450 |
|
|
13
|
+
|
|
14
|
+
**Title:**
|
|
15
|
+
Test Movie
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "rejection_test",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"properties": {
|
|
6
|
+
"ratings": {
|
|
7
|
+
"type": "array",
|
|
8
|
+
"items": {
|
|
9
|
+
"type": "object",
|
|
10
|
+
"properties": {
|
|
11
|
+
"source": {
|
|
12
|
+
"title": "Source",
|
|
13
|
+
"type": "string"
|
|
14
|
+
},
|
|
15
|
+
"score": {
|
|
16
|
+
"title": "Score",
|
|
17
|
+
"type": "number"
|
|
18
|
+
},
|
|
19
|
+
"votes": {
|
|
20
|
+
"title": "Votes",
|
|
21
|
+
"type": "number"
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"title": "Ratings",
|
|
26
|
+
"minItems": 1,
|
|
27
|
+
"maxItems": 5,
|
|
28
|
+
"x-markform": {
|
|
29
|
+
"role": "agent",
|
|
30
|
+
"group": "fields"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"title": {
|
|
34
|
+
"type": "string",
|
|
35
|
+
"title": "Title",
|
|
36
|
+
"x-markform": {
|
|
37
|
+
"role": "agent",
|
|
38
|
+
"group": "fields"
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"title": "Rejection Test Form",
|
|
43
|
+
"description": "A form to test patch rejection scenarios - verifies that type mismatch\nerrors are properly recorded and recovery works.",
|
|
44
|
+
"required": ["ratings", "title"],
|
|
45
|
+
"x-markform": {
|
|
46
|
+
"spec": "MF/0.1",
|
|
47
|
+
"roles": ["user", "agent"],
|
|
48
|
+
"roleInstructions": {
|
|
49
|
+
"user": "Fill in the fields you have direct knowledge of.",
|
|
50
|
+
"agent": "Complete the remaining fields based on the provided context."
|
|
51
|
+
},
|
|
52
|
+
"groups": [
|
|
53
|
+
{
|
|
54
|
+
"id": "fields",
|
|
55
|
+
"title": "Test Fields"
|
|
56
|
+
}
|
|
57
|
+
]
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
markform:
|
|
3
|
+
spec: MF/0.1
|
|
4
|
+
title: Rejection Test Form
|
|
5
|
+
description: "Tests type mismatch rejection and recovery behavior"
|
|
6
|
+
roles:
|
|
7
|
+
- agent
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
{% form id="rejection_test" title="Rejection Test Form" %}
|
|
11
|
+
|
|
12
|
+
{% description ref="rejection_test" %}
|
|
13
|
+
A form to test patch rejection scenarios - verifies that type mismatch
|
|
14
|
+
errors are properly recorded and recovery works.
|
|
15
|
+
{% /description %}
|
|
16
|
+
|
|
17
|
+
{% group id="fields" title="Test Fields" %}
|
|
18
|
+
|
|
19
|
+
{% field kind="table" id="ratings" label="Ratings" required=true minRows=1 maxRows=5
|
|
20
|
+
columnIds=["source", "score", "votes"]
|
|
21
|
+
columnLabels=["Source", "Score", "Votes"]
|
|
22
|
+
columnTypes=["string", "number", "number"] %}
|
|
23
|
+
| Source | Score | Votes |
|
|
24
|
+
|--------|-------|-------|
|
|
25
|
+
{% /field %}
|
|
26
|
+
|
|
27
|
+
{% instructions ref="ratings" %}
|
|
28
|
+
Enter rating data with source name, score (0-100), and vote count.
|
|
29
|
+
{% /instructions %}
|
|
30
|
+
|
|
31
|
+
{% field kind="string" id="title" label="Title" required=true %}{% /field %}
|
|
32
|
+
|
|
33
|
+
{% /group %}
|
|
34
|
+
|
|
35
|
+
{% /form %}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
session_version: 0.1.0
|
|
2
|
+
mode: mock
|
|
3
|
+
form:
|
|
4
|
+
path: rejection-test.form.md
|
|
5
|
+
mock:
|
|
6
|
+
completed_mock: rejection-test-mock-filled.form.md
|
|
7
|
+
harness:
|
|
8
|
+
max_turns: 100
|
|
9
|
+
max_patches_per_turn: 20
|
|
10
|
+
max_issues_per_turn: 10
|
|
11
|
+
target_roles:
|
|
12
|
+
- '*'
|
|
13
|
+
fill_mode: continue
|
|
14
|
+
turns:
|
|
15
|
+
- turn: 1
|
|
16
|
+
inspect:
|
|
17
|
+
issues:
|
|
18
|
+
- ref: ratings
|
|
19
|
+
scope: field
|
|
20
|
+
reason: required_missing
|
|
21
|
+
message: Required field "Ratings" is empty
|
|
22
|
+
severity: required
|
|
23
|
+
priority: 1
|
|
24
|
+
- ref: title
|
|
25
|
+
scope: field
|
|
26
|
+
reason: required_missing
|
|
27
|
+
message: Required field "Title" is empty
|
|
28
|
+
severity: required
|
|
29
|
+
priority: 1
|
|
30
|
+
apply:
|
|
31
|
+
patches:
|
|
32
|
+
- op: set_string
|
|
33
|
+
field_id: ratings
|
|
34
|
+
value: Intentional type mismatch - testing rejection feedback
|
|
35
|
+
- op: set_string
|
|
36
|
+
field_id: title
|
|
37
|
+
value: Test Movie
|
|
38
|
+
rejected_patches:
|
|
39
|
+
- patch_index: 0
|
|
40
|
+
message: Cannot apply set_string to table field "ratings"
|
|
41
|
+
field_id: ratings
|
|
42
|
+
field_kind: table
|
|
43
|
+
column_ids:
|
|
44
|
+
- source
|
|
45
|
+
- score
|
|
46
|
+
- votes
|
|
47
|
+
after:
|
|
48
|
+
required_issue_count: 2
|
|
49
|
+
markdown_sha256: 4edc8e8f1e858aafa657f32e1c2e56c4bfbe93b37224e1010eb6883c111e1c86
|
|
50
|
+
answered_field_count: 0
|
|
51
|
+
skipped_field_count: 0
|
|
52
|
+
- turn: 2
|
|
53
|
+
inspect:
|
|
54
|
+
issues:
|
|
55
|
+
- ref: ratings
|
|
56
|
+
scope: field
|
|
57
|
+
reason: required_missing
|
|
58
|
+
message: Required field "Ratings" is empty
|
|
59
|
+
severity: required
|
|
60
|
+
priority: 1
|
|
61
|
+
- ref: title
|
|
62
|
+
scope: field
|
|
63
|
+
reason: required_missing
|
|
64
|
+
message: Required field "Title" is empty
|
|
65
|
+
severity: required
|
|
66
|
+
priority: 1
|
|
67
|
+
apply:
|
|
68
|
+
patches:
|
|
69
|
+
- op: set_table
|
|
70
|
+
field_id: ratings
|
|
71
|
+
rows:
|
|
72
|
+
- source: IMDB
|
|
73
|
+
score: 85
|
|
74
|
+
votes: 12500
|
|
75
|
+
- source: Rotten Tomatoes
|
|
76
|
+
score: 92
|
|
77
|
+
votes: 450
|
|
78
|
+
- op: set_string
|
|
79
|
+
field_id: title
|
|
80
|
+
value: Test Movie
|
|
81
|
+
after:
|
|
82
|
+
required_issue_count: 0
|
|
83
|
+
markdown_sha256: f45e7cd87b036d57564e3340dec33c1dc5c2094d880e52b903f64da19b3b8ec0
|
|
84
|
+
answered_field_count: 2
|
|
85
|
+
skipped_field_count: 0
|
|
86
|
+
final:
|
|
87
|
+
expect_complete: true
|
|
88
|
+
expected_completed_form: rejection-test-mock-filled.form.md
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# Simple Test Form
|
|
2
|
+
|
|
3
|
+
A fully interactive form demonstrating all Markform v0.1 field types.
|
|
4
|
+
Fill all fields using interactive prompts - no LLM API key needed.
|
|
5
|
+
|
|
6
|
+
## Basic Fields
|
|
7
|
+
|
|
8
|
+
**Name:**
|
|
9
|
+
Alice Johnson
|
|
10
|
+
|
|
11
|
+
**Email:**
|
|
12
|
+
alice@example.com
|
|
13
|
+
|
|
14
|
+
**Age:**
|
|
15
|
+
32
|
|
16
|
+
|
|
17
|
+
**Score:**
|
|
18
|
+
87.5
|
|
19
|
+
|
|
20
|
+
## List Fields
|
|
21
|
+
|
|
22
|
+
**Tags:**
|
|
23
|
+
- typescript
|
|
24
|
+
- testing
|
|
25
|
+
- forms
|
|
26
|
+
|
|
27
|
+
## Selection Fields
|
|
28
|
+
|
|
29
|
+
**Priority:**
|
|
30
|
+
Medium
|
|
31
|
+
|
|
32
|
+
**Categories:**
|
|
33
|
+
- Frontend
|
|
34
|
+
- Backend
|
|
35
|
+
|
|
36
|
+
## Checkbox Fields
|
|
37
|
+
|
|
38
|
+
**Tasks (Multi Mode):**
|
|
39
|
+
- [x] Research
|
|
40
|
+
- [x] Design
|
|
41
|
+
- [x] Implement
|
|
42
|
+
- [-] Test
|
|
43
|
+
|
|
44
|
+
**Agreements (Simple Mode):**
|
|
45
|
+
- [x] I have read the guidelines
|
|
46
|
+
- [x] I agree to the terms
|
|
47
|
+
|
|
48
|
+
**Confirmations (Explicit Mode):**
|
|
49
|
+
- [x] Data has been backed up
|
|
50
|
+
- [ ] Stakeholders notified
|
|
51
|
+
|
|
52
|
+
## URL Fields
|
|
53
|
+
|
|
54
|
+
**Website:**
|
|
55
|
+
https://alice.dev
|
|
56
|
+
|
|
57
|
+
**References:**
|
|
58
|
+
- https://docs.example.com/guide
|
|
59
|
+
- https://github.com/example/project
|
|
60
|
+
- https://medium.com/article-about-forms
|
|
61
|
+
|
|
62
|
+
## Date and Year Fields
|
|
63
|
+
|
|
64
|
+
**Event Date:**
|
|
65
|
+
2025-06-15
|
|
66
|
+
|
|
67
|
+
**Founded Year:**
|
|
68
|
+
2020
|
|
69
|
+
|
|
70
|
+
## Table Fields
|
|
71
|
+
|
|
72
|
+
**Team Members:**
|
|
73
|
+
| Name | Role | Start Date |
|
|
74
|
+
| --- | --- | --- |
|
|
75
|
+
| Alice | Engineer | 2024-01-15 |
|
|
76
|
+
| Bob | Designer | 2023-06-01 |
|
|
77
|
+
|
|
78
|
+
**Project Tasks:**
|
|
79
|
+
_(empty)_
|
|
80
|
+
|
|
81
|
+
## Optional Fields
|
|
82
|
+
|
|
83
|
+
**Notes:**
|
|
84
|
+
This is a test note.
|
|
85
|
+
|
|
86
|
+
**Optional Number:**
|
|
87
|
+
_(empty)_
|
|
88
|
+
|
|
89
|
+
**Related URL:**
|
|
90
|
+
https://markform.dev/docs
|
|
91
|
+
|
|
92
|
+
**Optional Date:**
|
|
93
|
+
_(empty)_
|
|
94
|
+
|
|
95
|
+
**Optional Year:**
|
|
96
|
+
_(empty)_
|
|
@@ -0,0 +1,374 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "simple_test",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"properties": {
|
|
6
|
+
"name": {
|
|
7
|
+
"type": "string",
|
|
8
|
+
"title": "Name",
|
|
9
|
+
"minLength": 2,
|
|
10
|
+
"maxLength": 50,
|
|
11
|
+
"x-markform": {
|
|
12
|
+
"role": "user",
|
|
13
|
+
"group": "basic_fields",
|
|
14
|
+
"placeholder": "Enter your name",
|
|
15
|
+
"examples": ["John Smith", "Jane Doe"]
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"email": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"title": "Email",
|
|
21
|
+
"pattern": "^[^@]+@[^@]+\\.[^@]+$",
|
|
22
|
+
"x-markform": {
|
|
23
|
+
"role": "user",
|
|
24
|
+
"group": "basic_fields",
|
|
25
|
+
"placeholder": "email@example.com",
|
|
26
|
+
"examples": ["alice@company.com", "bob@example.org"]
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"age": {
|
|
30
|
+
"type": "integer",
|
|
31
|
+
"title": "Age",
|
|
32
|
+
"minimum": 0,
|
|
33
|
+
"maximum": 150,
|
|
34
|
+
"x-markform": {
|
|
35
|
+
"role": "user",
|
|
36
|
+
"group": "basic_fields",
|
|
37
|
+
"placeholder": "25",
|
|
38
|
+
"examples": ["18", "30", "45"]
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"score": {
|
|
42
|
+
"type": "number",
|
|
43
|
+
"title": "Score",
|
|
44
|
+
"minimum": 0,
|
|
45
|
+
"maximum": 100,
|
|
46
|
+
"x-markform": {
|
|
47
|
+
"role": "user",
|
|
48
|
+
"group": "basic_fields",
|
|
49
|
+
"placeholder": "85.5",
|
|
50
|
+
"examples": ["75.0", "90.5", "100.0"]
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
"tags": {
|
|
54
|
+
"type": "array",
|
|
55
|
+
"items": {
|
|
56
|
+
"type": "string",
|
|
57
|
+
"minLength": 2
|
|
58
|
+
},
|
|
59
|
+
"title": "Tags",
|
|
60
|
+
"minItems": 1,
|
|
61
|
+
"maxItems": 5,
|
|
62
|
+
"uniqueItems": true,
|
|
63
|
+
"x-markform": {
|
|
64
|
+
"role": "user",
|
|
65
|
+
"group": "list_fields"
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
"priority": {
|
|
69
|
+
"type": "string",
|
|
70
|
+
"enum": ["low", "medium", "high"],
|
|
71
|
+
"title": "Priority",
|
|
72
|
+
"x-markform": {
|
|
73
|
+
"role": "user",
|
|
74
|
+
"group": "selection_fields"
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
"categories": {
|
|
78
|
+
"type": "array",
|
|
79
|
+
"items": {
|
|
80
|
+
"type": "string",
|
|
81
|
+
"enum": ["frontend", "backend", "database", "devops"]
|
|
82
|
+
},
|
|
83
|
+
"title": "Categories",
|
|
84
|
+
"minItems": 1,
|
|
85
|
+
"maxItems": 3,
|
|
86
|
+
"x-markform": {
|
|
87
|
+
"role": "user",
|
|
88
|
+
"group": "selection_fields"
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
"tasks_multi": {
|
|
92
|
+
"type": "object",
|
|
93
|
+
"properties": {
|
|
94
|
+
"research": {
|
|
95
|
+
"type": "string",
|
|
96
|
+
"enum": ["todo", "done", "incomplete", "active", "na"],
|
|
97
|
+
"title": "Research"
|
|
98
|
+
},
|
|
99
|
+
"design": {
|
|
100
|
+
"type": "string",
|
|
101
|
+
"enum": ["todo", "done", "incomplete", "active", "na"],
|
|
102
|
+
"title": "Design"
|
|
103
|
+
},
|
|
104
|
+
"implement": {
|
|
105
|
+
"type": "string",
|
|
106
|
+
"enum": ["todo", "done", "incomplete", "active", "na"],
|
|
107
|
+
"title": "Implement"
|
|
108
|
+
},
|
|
109
|
+
"test": {
|
|
110
|
+
"type": "string",
|
|
111
|
+
"enum": ["todo", "done", "incomplete", "active", "na"],
|
|
112
|
+
"title": "Test"
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
"title": "Tasks (Multi Mode)",
|
|
116
|
+
"x-markform": {
|
|
117
|
+
"role": "user",
|
|
118
|
+
"group": "checkbox_fields",
|
|
119
|
+
"checkboxMode": "multi"
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
"tasks_simple": {
|
|
123
|
+
"type": "object",
|
|
124
|
+
"properties": {
|
|
125
|
+
"read_guidelines": {
|
|
126
|
+
"type": "string",
|
|
127
|
+
"enum": ["todo", "done"],
|
|
128
|
+
"title": "I have read the guidelines"
|
|
129
|
+
},
|
|
130
|
+
"agree_terms": {
|
|
131
|
+
"type": "string",
|
|
132
|
+
"enum": ["todo", "done"],
|
|
133
|
+
"title": "I agree to the terms"
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
"title": "Agreements (Simple Mode)",
|
|
137
|
+
"x-markform": {
|
|
138
|
+
"role": "user",
|
|
139
|
+
"group": "checkbox_fields",
|
|
140
|
+
"checkboxMode": "simple"
|
|
141
|
+
}
|
|
142
|
+
},
|
|
143
|
+
"confirmations": {
|
|
144
|
+
"type": "object",
|
|
145
|
+
"properties": {
|
|
146
|
+
"backed_up": {
|
|
147
|
+
"type": "string",
|
|
148
|
+
"enum": ["unfilled", "yes", "no"],
|
|
149
|
+
"title": "Data has been backed up"
|
|
150
|
+
},
|
|
151
|
+
"notified": {
|
|
152
|
+
"type": "string",
|
|
153
|
+
"enum": ["unfilled", "yes", "no"],
|
|
154
|
+
"title": "Stakeholders notified"
|
|
155
|
+
}
|
|
156
|
+
},
|
|
157
|
+
"title": "Confirmations (Explicit Mode)",
|
|
158
|
+
"x-markform": {
|
|
159
|
+
"role": "user",
|
|
160
|
+
"group": "checkbox_fields",
|
|
161
|
+
"checkboxMode": "explicit"
|
|
162
|
+
}
|
|
163
|
+
},
|
|
164
|
+
"website": {
|
|
165
|
+
"type": "string",
|
|
166
|
+
"format": "uri",
|
|
167
|
+
"title": "Website",
|
|
168
|
+
"x-markform": {
|
|
169
|
+
"role": "user",
|
|
170
|
+
"group": "url_fields",
|
|
171
|
+
"placeholder": "https://example.com",
|
|
172
|
+
"examples": ["https://github.com/user/repo", "https://company.com"]
|
|
173
|
+
}
|
|
174
|
+
},
|
|
175
|
+
"references": {
|
|
176
|
+
"type": "array",
|
|
177
|
+
"items": {
|
|
178
|
+
"type": "string",
|
|
179
|
+
"format": "uri"
|
|
180
|
+
},
|
|
181
|
+
"title": "References",
|
|
182
|
+
"minItems": 1,
|
|
183
|
+
"maxItems": 5,
|
|
184
|
+
"uniqueItems": true,
|
|
185
|
+
"x-markform": {
|
|
186
|
+
"role": "user",
|
|
187
|
+
"group": "url_fields",
|
|
188
|
+
"placeholder": "https://docs.example.com",
|
|
189
|
+
"examples": ["https://wikipedia.org/wiki/Example", "https://docs.github.com/en"]
|
|
190
|
+
}
|
|
191
|
+
},
|
|
192
|
+
"event_date": {
|
|
193
|
+
"type": "string",
|
|
194
|
+
"format": "date",
|
|
195
|
+
"title": "Event Date",
|
|
196
|
+
"formatMinimum": "2020-01-01",
|
|
197
|
+
"formatMaximum": "2030-12-31",
|
|
198
|
+
"x-markform": {
|
|
199
|
+
"role": "user",
|
|
200
|
+
"group": "date_fields",
|
|
201
|
+
"minDate": "2020-01-01",
|
|
202
|
+
"maxDate": "2030-12-31"
|
|
203
|
+
}
|
|
204
|
+
},
|
|
205
|
+
"founded_year": {
|
|
206
|
+
"type": "integer",
|
|
207
|
+
"title": "Founded Year",
|
|
208
|
+
"minimum": 1900,
|
|
209
|
+
"maximum": 2030,
|
|
210
|
+
"x-markform": {
|
|
211
|
+
"role": "user",
|
|
212
|
+
"group": "date_fields"
|
|
213
|
+
}
|
|
214
|
+
},
|
|
215
|
+
"team_members": {
|
|
216
|
+
"type": "array",
|
|
217
|
+
"items": {
|
|
218
|
+
"type": "object",
|
|
219
|
+
"properties": {
|
|
220
|
+
"name": {
|
|
221
|
+
"title": "Name",
|
|
222
|
+
"type": "string"
|
|
223
|
+
},
|
|
224
|
+
"role": {
|
|
225
|
+
"title": "Role",
|
|
226
|
+
"type": "string"
|
|
227
|
+
},
|
|
228
|
+
"start_date": {
|
|
229
|
+
"title": "Start Date",
|
|
230
|
+
"type": "string",
|
|
231
|
+
"format": "date"
|
|
232
|
+
}
|
|
233
|
+
},
|
|
234
|
+
"required": ["name"]
|
|
235
|
+
},
|
|
236
|
+
"title": "Team Members",
|
|
237
|
+
"minItems": 0,
|
|
238
|
+
"maxItems": 5,
|
|
239
|
+
"x-markform": {
|
|
240
|
+
"role": "user",
|
|
241
|
+
"group": "table_fields"
|
|
242
|
+
}
|
|
243
|
+
},
|
|
244
|
+
"project_tasks": {
|
|
245
|
+
"type": "array",
|
|
246
|
+
"items": {
|
|
247
|
+
"type": "object",
|
|
248
|
+
"properties": {
|
|
249
|
+
"task": {
|
|
250
|
+
"title": "Task",
|
|
251
|
+
"type": "string"
|
|
252
|
+
},
|
|
253
|
+
"estimate_hrs": {
|
|
254
|
+
"title": "Estimate (hrs)",
|
|
255
|
+
"type": "number"
|
|
256
|
+
},
|
|
257
|
+
"link": {
|
|
258
|
+
"title": "Link",
|
|
259
|
+
"type": "string",
|
|
260
|
+
"format": "uri"
|
|
261
|
+
}
|
|
262
|
+
},
|
|
263
|
+
"required": ["task"]
|
|
264
|
+
},
|
|
265
|
+
"title": "Project Tasks",
|
|
266
|
+
"minItems": 0,
|
|
267
|
+
"maxItems": 10,
|
|
268
|
+
"x-markform": {
|
|
269
|
+
"role": "user",
|
|
270
|
+
"group": "table_fields"
|
|
271
|
+
}
|
|
272
|
+
},
|
|
273
|
+
"notes": {
|
|
274
|
+
"type": "string",
|
|
275
|
+
"title": "Notes",
|
|
276
|
+
"x-markform": {
|
|
277
|
+
"role": "user",
|
|
278
|
+
"group": "optional_fields"
|
|
279
|
+
}
|
|
280
|
+
},
|
|
281
|
+
"optional_number": {
|
|
282
|
+
"type": "number",
|
|
283
|
+
"title": "Optional Number",
|
|
284
|
+
"x-markform": {
|
|
285
|
+
"role": "user",
|
|
286
|
+
"group": "optional_fields"
|
|
287
|
+
}
|
|
288
|
+
},
|
|
289
|
+
"related_url": {
|
|
290
|
+
"type": "string",
|
|
291
|
+
"format": "uri",
|
|
292
|
+
"title": "Related URL",
|
|
293
|
+
"x-markform": {
|
|
294
|
+
"role": "user",
|
|
295
|
+
"group": "optional_fields"
|
|
296
|
+
}
|
|
297
|
+
},
|
|
298
|
+
"optional_date": {
|
|
299
|
+
"type": "string",
|
|
300
|
+
"format": "date",
|
|
301
|
+
"title": "Optional Date",
|
|
302
|
+
"x-markform": {
|
|
303
|
+
"role": "user",
|
|
304
|
+
"group": "optional_fields"
|
|
305
|
+
}
|
|
306
|
+
},
|
|
307
|
+
"optional_year": {
|
|
308
|
+
"type": "integer",
|
|
309
|
+
"title": "Optional Year",
|
|
310
|
+
"x-markform": {
|
|
311
|
+
"role": "user",
|
|
312
|
+
"group": "optional_fields"
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
},
|
|
316
|
+
"title": "Simple Test Form",
|
|
317
|
+
"description": "A fully interactive form demonstrating all Markform v0.1 field types.\nFill all fields using interactive prompts - no LLM API key needed.",
|
|
318
|
+
"required": [
|
|
319
|
+
"name",
|
|
320
|
+
"email",
|
|
321
|
+
"age",
|
|
322
|
+
"tags",
|
|
323
|
+
"priority",
|
|
324
|
+
"categories",
|
|
325
|
+
"tasks_multi",
|
|
326
|
+
"tasks_simple",
|
|
327
|
+
"confirmations",
|
|
328
|
+
"website",
|
|
329
|
+
"event_date",
|
|
330
|
+
"founded_year"
|
|
331
|
+
],
|
|
332
|
+
"x-markform": {
|
|
333
|
+
"spec": "MF/0.1",
|
|
334
|
+
"roles": ["user", "agent"],
|
|
335
|
+
"roleInstructions": {
|
|
336
|
+
"user": "Fill in the fields you have direct knowledge of.",
|
|
337
|
+
"agent": "Complete the remaining fields based on the provided context."
|
|
338
|
+
},
|
|
339
|
+
"groups": [
|
|
340
|
+
{
|
|
341
|
+
"id": "basic_fields",
|
|
342
|
+
"title": "Basic Fields"
|
|
343
|
+
},
|
|
344
|
+
{
|
|
345
|
+
"id": "list_fields",
|
|
346
|
+
"title": "List Fields"
|
|
347
|
+
},
|
|
348
|
+
{
|
|
349
|
+
"id": "selection_fields",
|
|
350
|
+
"title": "Selection Fields"
|
|
351
|
+
},
|
|
352
|
+
{
|
|
353
|
+
"id": "checkbox_fields",
|
|
354
|
+
"title": "Checkbox Fields"
|
|
355
|
+
},
|
|
356
|
+
{
|
|
357
|
+
"id": "url_fields",
|
|
358
|
+
"title": "URL Fields"
|
|
359
|
+
},
|
|
360
|
+
{
|
|
361
|
+
"id": "date_fields",
|
|
362
|
+
"title": "Date and Year Fields"
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
"id": "table_fields",
|
|
366
|
+
"title": "Table Fields"
|
|
367
|
+
},
|
|
368
|
+
{
|
|
369
|
+
"id": "optional_fields",
|
|
370
|
+
"title": "Optional Fields"
|
|
371
|
+
}
|
|
372
|
+
]
|
|
373
|
+
}
|
|
374
|
+
}
|