markform 0.1.23 → 0.1.25

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 (50) hide show
  1. package/README.md +69 -29
  2. package/dist/ai-sdk.d.mts +1 -1
  3. package/dist/ai-sdk.mjs +48 -6
  4. package/dist/ai-sdk.mjs.map +1 -1
  5. package/dist/bin.mjs +1 -1
  6. package/dist/{cli-ZcOC47KK.mjs → cli-B1T8kMFt.mjs} +709 -125
  7. package/dist/cli-B1T8kMFt.mjs.map +1 -0
  8. package/dist/cli.d.mts +1 -1
  9. package/dist/cli.mjs +1 -1
  10. package/dist/{coreTypes-BlsJkU1w.d.mts → coreTypes-CxpqKpBA.d.mts} +181 -4
  11. package/dist/{coreTypes-CTLr-NGd.mjs → coreTypes-DIv9Aabl.mjs} +56 -6
  12. package/dist/coreTypes-DIv9Aabl.mjs.map +1 -0
  13. package/dist/{fillRecord-DTl5lnK0.d.mts → fillRecord-V3vlyobd.d.mts} +29 -1
  14. package/dist/{fillRecordRenderer-VBQ2vwPV.mjs → fillRecordRenderer-BqRPHPmE.mjs} +47 -15
  15. package/dist/fillRecordRenderer-BqRPHPmE.mjs.map +1 -0
  16. package/dist/index.d.mts +34 -30
  17. package/dist/index.mjs +4 -4
  18. package/dist/{apply-KzQztrDV.mjs → prompts-DaPKumGY.mjs} +1081 -17
  19. package/dist/prompts-DaPKumGY.mjs.map +1 -0
  20. package/dist/render.d.mts +2 -2
  21. package/dist/render.mjs +1 -1
  22. package/dist/{session-BCcltrLA.mjs → session-BW9jtYNV.mjs} +2 -2
  23. package/dist/{session-BCcltrLA.mjs.map → session-BW9jtYNV.mjs.map} +1 -1
  24. package/dist/{session-VeSkVrck.mjs → session-DHyTMP67.mjs} +1 -1
  25. package/dist/{shared-fb0nkzQi.mjs → shared-BLh342F5.mjs} +1 -1
  26. package/dist/{shared-CsdT2T7k.mjs → shared-BszoSkAO.mjs} +10 -10
  27. package/dist/shared-BszoSkAO.mjs.map +1 -0
  28. package/dist/{src-B2uFvGli.mjs → src-DrXmaOWl.mjs} +179 -840
  29. package/dist/src-DrXmaOWl.mjs.map +1 -0
  30. package/docs/markform-apis.md +25 -7
  31. package/docs/markform-reference.md +273 -179
  32. package/docs/markform-spec.md +92 -36
  33. package/docs/skill/SKILL.md +161 -0
  34. package/examples/markform-demo-playbook.md +342 -0
  35. package/examples/parallel/parallel-research.form.md +2 -6
  36. package/examples/rejection-test/rejection-test.session.yaml +52 -0
  37. package/examples/simple/simple-mock-filled.report.md +2 -2
  38. package/examples/simple/simple-skipped-filled.report.md +2 -2
  39. package/examples/simple/simple-with-skips.session.yaml +78 -0
  40. package/examples/simple/simple.session.yaml +78 -0
  41. package/examples/twitter-thread/twitter-thread.form.md +5 -5
  42. package/package.json +2 -2
  43. package/dist/apply-KzQztrDV.mjs.map +0 -1
  44. package/dist/cli-ZcOC47KK.mjs.map +0 -1
  45. package/dist/coreTypes-CTLr-NGd.mjs.map +0 -1
  46. package/dist/fillRecordRenderer-VBQ2vwPV.mjs.map +0 -1
  47. package/dist/shared-CsdT2T7k.mjs.map +0 -1
  48. package/dist/src-B2uFvGli.mjs.map +0 -1
  49. package/examples/startup-research/startup-research-mock-filled.form.md +0 -297
  50. package/examples/startup-research/startup-research.form.md +0 -181
@@ -152,6 +152,19 @@ turns:
152
152
  | checkboxes | `{ op: "set_checkboxes", fieldId: "tasks", value: { "task1": "done", "task2": "todo" } }` |
153
153
  | table | `{ op: "set_table", fieldId: "team", value: [{ "name": "Alice", "role": "Engineer" }] }` |
154
154
 
155
+ ## Incremental Operations (for collections)
156
+
157
+ Use these to add/remove items without replacing the entire collection:
158
+
159
+ | Type | Example |
160
+ |------|---------|
161
+ | append_table | `{ op: "append_table", fieldId: "team", value: [{ "name": "Bob", "role": "PM" }] }` |
162
+ | append_string_list | `{ op: "append_string_list", fieldId: "tags", value: ["new_tag"] }` |
163
+ | append_url_list | `{ op: "append_url_list", fieldId: "sources", value: ["https://new.com"] }` |
164
+ | delete_table | `{ op: "delete_table", fieldId: "team", value: 0 }` (0-based row index) |
165
+ | delete_string_list | `{ op: "delete_string_list", fieldId: "tags", value: 0 }` (0-based item index) |
166
+ | delete_url_list | `{ op: "delete_url_list", fieldId: "sources", value: 0 }` (0-based item index) |
167
+
155
168
  ## Important: checkboxes vs multi_select
156
169
 
157
170
  These two types look similar but have DIFFERENT value formats:
@@ -478,6 +491,19 @@ turns:
478
491
  | checkboxes | `{ op: "set_checkboxes", fieldId: "tasks", value: { "task1": "done", "task2": "todo" } }` |
479
492
  | table | `{ op: "set_table", fieldId: "team", value: [{ "name": "Alice", "role": "Engineer" }] }` |
480
493
 
494
+ ## Incremental Operations (for collections)
495
+
496
+ Use these to add/remove items without replacing the entire collection:
497
+
498
+ | Type | Example |
499
+ |------|---------|
500
+ | append_table | `{ op: "append_table", fieldId: "team", value: [{ "name": "Bob", "role": "PM" }] }` |
501
+ | append_string_list | `{ op: "append_string_list", fieldId: "tags", value: ["new_tag"] }` |
502
+ | append_url_list | `{ op: "append_url_list", fieldId: "sources", value: ["https://new.com"] }` |
503
+ | delete_table | `{ op: "delete_table", fieldId: "team", value: 0 }` (0-based row index) |
504
+ | delete_string_list | `{ op: "delete_string_list", fieldId: "tags", value: 0 }` (0-based item index) |
505
+ | delete_url_list | `{ op: "delete_url_list", fieldId: "sources", value: 0 }` (0-based item index) |
506
+
481
507
  ## Important: checkboxes vs multi_select
482
508
 
483
509
  These two types look similar but have DIFFERENT value formats:
@@ -980,6 +1006,19 @@ turns:
980
1006
  | checkboxes | `{ op: "set_checkboxes", fieldId: "tasks", value: { "task1": "done", "task2": "todo" } }` |
981
1007
  | table | `{ op: "set_table", fieldId: "team", value: [{ "name": "Alice", "role": "Engineer" }] }` |
982
1008
 
1009
+ ## Incremental Operations (for collections)
1010
+
1011
+ Use these to add/remove items without replacing the entire collection:
1012
+
1013
+ | Type | Example |
1014
+ |------|---------|
1015
+ | append_table | `{ op: "append_table", fieldId: "team", value: [{ "name": "Bob", "role": "PM" }] }` |
1016
+ | append_string_list | `{ op: "append_string_list", fieldId: "tags", value: ["new_tag"] }` |
1017
+ | append_url_list | `{ op: "append_url_list", fieldId: "sources", value: ["https://new.com"] }` |
1018
+ | delete_table | `{ op: "delete_table", fieldId: "team", value: 0 }` (0-based row index) |
1019
+ | delete_string_list | `{ op: "delete_string_list", fieldId: "tags", value: 0 }` (0-based item index) |
1020
+ | delete_url_list | `{ op: "delete_url_list", fieldId: "sources", value: 0 }` (0-based item index) |
1021
+
983
1022
  ## Important: checkboxes vs multi_select
984
1023
 
985
1024
  These two types look similar but have DIFFERENT value formats:
@@ -1330,6 +1369,19 @@ turns:
1330
1369
  | checkboxes | `{ op: "set_checkboxes", fieldId: "tasks", value: { "task1": "done", "task2": "todo" } }` |
1331
1370
  | table | `{ op: "set_table", fieldId: "team", value: [{ "name": "Alice", "role": "Engineer" }] }` |
1332
1371
 
1372
+ ## Incremental Operations (for collections)
1373
+
1374
+ Use these to add/remove items without replacing the entire collection:
1375
+
1376
+ | Type | Example |
1377
+ |------|---------|
1378
+ | append_table | `{ op: "append_table", fieldId: "team", value: [{ "name": "Bob", "role": "PM" }] }` |
1379
+ | append_string_list | `{ op: "append_string_list", fieldId: "tags", value: ["new_tag"] }` |
1380
+ | append_url_list | `{ op: "append_url_list", fieldId: "sources", value: ["https://new.com"] }` |
1381
+ | delete_table | `{ op: "delete_table", fieldId: "team", value: 0 }` (0-based row index) |
1382
+ | delete_string_list | `{ op: "delete_string_list", fieldId: "tags", value: 0 }` (0-based item index) |
1383
+ | delete_url_list | `{ op: "delete_url_list", fieldId: "sources", value: 0 }` (0-based item index) |
1384
+
1333
1385
  ## Important: checkboxes vs multi_select
1334
1386
 
1335
1387
  These two types look similar but have DIFFERENT value formats:
@@ -1770,6 +1822,19 @@ turns:
1770
1822
  | checkboxes | `{ op: "set_checkboxes", fieldId: "tasks", value: { "task1": "done", "task2": "todo" } }` |
1771
1823
  | table | `{ op: "set_table", fieldId: "team", value: [{ "name": "Alice", "role": "Engineer" }] }` |
1772
1824
 
1825
+ ## Incremental Operations (for collections)
1826
+
1827
+ Use these to add/remove items without replacing the entire collection:
1828
+
1829
+ | Type | Example |
1830
+ |------|---------|
1831
+ | append_table | `{ op: "append_table", fieldId: "team", value: [{ "name": "Bob", "role": "PM" }] }` |
1832
+ | append_string_list | `{ op: "append_string_list", fieldId: "tags", value: ["new_tag"] }` |
1833
+ | append_url_list | `{ op: "append_url_list", fieldId: "sources", value: ["https://new.com"] }` |
1834
+ | delete_table | `{ op: "delete_table", fieldId: "team", value: 0 }` (0-based row index) |
1835
+ | delete_string_list | `{ op: "delete_string_list", fieldId: "tags", value: 0 }` (0-based item index) |
1836
+ | delete_url_list | `{ op: "delete_url_list", fieldId: "sources", value: 0 }` (0-based item index) |
1837
+
1773
1838
  ## Important: checkboxes vs multi_select
1774
1839
 
1775
1840
  These two types look similar but have DIFFERENT value formats:
@@ -2095,6 +2160,19 @@ turns:
2095
2160
  | checkboxes | `{ op: "set_checkboxes", fieldId: "tasks", value: { "task1": "done", "task2": "todo" } }` |
2096
2161
  | table | `{ op: "set_table", fieldId: "team", value: [{ "name": "Alice", "role": "Engineer" }] }` |
2097
2162
 
2163
+ ## Incremental Operations (for collections)
2164
+
2165
+ Use these to add/remove items without replacing the entire collection:
2166
+
2167
+ | Type | Example |
2168
+ |------|---------|
2169
+ | append_table | `{ op: "append_table", fieldId: "team", value: [{ "name": "Bob", "role": "PM" }] }` |
2170
+ | append_string_list | `{ op: "append_string_list", fieldId: "tags", value: ["new_tag"] }` |
2171
+ | append_url_list | `{ op: "append_url_list", fieldId: "sources", value: ["https://new.com"] }` |
2172
+ | delete_table | `{ op: "delete_table", fieldId: "team", value: 0 }` (0-based row index) |
2173
+ | delete_string_list | `{ op: "delete_string_list", fieldId: "tags", value: 0 }` (0-based item index) |
2174
+ | delete_url_list | `{ op: "delete_url_list", fieldId: "sources", value: 0 }` (0-based item index) |
2175
+
2098
2176
  ## Important: checkboxes vs multi_select
2099
2177
 
2100
2178
  These two types look similar but have DIFFERENT value formats:
@@ -154,7 +154,7 @@ Extract every insight, claim, or idea worth sharing.
154
154
  <!-- field kind="table" id="insights_table" label="Insights" role="agent" required=true
155
155
  columnIds=["insight", "why_matters", "type"]
156
156
  columnLabels=["Insight/Claim", "Why It Matters", "Type"]
157
- columnTypes=["string", "string", "string"]
157
+ columnTypes=["string", "string", {"type": "string", "enum": ["thesis", "supporting", "example", "context", "contrarian", "actionable"]}]
158
158
  minRows=5 maxRows=20 -->
159
159
 
160
160
  | Insight/Claim | Why It Matters | Type |
@@ -188,7 +188,7 @@ Not every insight makes the thread. Rank by impact and assign roles.
188
188
  <!-- field kind="table" id="priority_table" label="Ranked Insights" role="agent" required=true
189
189
  columnIds=["rank", "insight_summary", "role", "include"]
190
190
  columnLabels=["Rank", "Insight (summary)", "Thread Role", "Include?"]
191
- columnTypes=["number", "string", "string", "string"]
191
+ columnTypes=[{"type": "number", "min": 1, "integer": true}, "string", {"type": "string", "enum": ["hook", "context", "main_point", "example", "pivot", "summary", "cta"]}, {"type": "string", "enum": ["yes", "no"]}]
192
192
  minRows=5 maxRows=15 -->
193
193
 
194
194
  | Rank | Insight (summary) | Thread Role | Include? |
@@ -237,7 +237,7 @@ Map the prioritized insights into a tweet-by-tweet structure.
237
237
  <!-- field kind="table" id="structure_table" label="Thread Structure" role="agent" required=true
238
238
  columnIds=["tweet_num", "role", "content_plan", "source_insight"]
239
239
  columnLabels=["#", "Role", "Content Plan", "From Insight"]
240
- columnTypes=["number", "string", "string", "string"]
240
+ columnTypes=[{"type": "number", "min": 1, "integer": true}, {"type": "string", "enum": ["hook", "context", "main_point", "example", "pivot", "summary", "cta"]}, "string", "string"]
241
241
  minRows=5 maxRows=20 -->
242
242
 
243
243
  | # | Role | Content Plan | From Insight |
@@ -266,7 +266,7 @@ Write each tweet following the structure plan.
266
266
  <!-- field kind="table" id="drafts_table" label="Tweet Drafts" role="agent" required=true
267
267
  columnIds=["tweet_num", "draft_content", "char_count", "issues"]
268
268
  columnLabels=["#", "Draft Content", "Chars", "Issues"]
269
- columnTypes=["number", "string", "number", "string"]
269
+ columnTypes=[{"type": "number", "min": 1, "integer": true}, {"type": "string", "maxLength": 280}, {"type": "number", "min": 1, "max": 280, "integer": true}, "string"]
270
270
  minRows=5 maxRows=20 -->
271
271
 
272
272
  | # | Draft Content | Chars | Issues |
@@ -299,7 +299,7 @@ Verify each tweet against quality criteria.
299
299
  <!-- field kind="table" id="review_table" label="Tweet Review" role="agent" required=true
300
300
  columnIds=["tweet_num", "under_280", "clear", "flows", "standalone", "revision_needed"]
301
301
  columnLabels=["#", "≤280?", "Clear?", "Flows?", "Standalone?", "Revision"]
302
- columnTypes=["number", "string", "string", "string", "string", "string"]
302
+ columnTypes=[{"type": "number", "min": 1, "integer": true}, {"type": "string", "enum": ["yes", "no"]}, {"type": "string", "enum": ["yes", "no"]}, {"type": "string", "enum": ["yes", "no", "na"]}, {"type": "string", "enum": ["yes", "no"]}, "string"]
303
303
  minRows=5 maxRows=20 -->
304
304
 
305
305
  | # | ≤280? | Clear? | Flows? | Standalone? | Revision |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "markform",
3
- "version": "0.1.23",
3
+ "version": "0.1.25",
4
4
  "description": "Markdown forms for token-friendly workflows",
5
5
  "license": "AGPL-3.0-or-later",
6
6
  "author": "Joshua Levy",
@@ -92,7 +92,7 @@
92
92
  "vitest": "^4.0.18"
93
93
  },
94
94
  "scripts": {
95
- "copy-docs": "cp ../../README.md . && mkdir -p docs && cp ../../docs/markform-spec.md docs/ && cp ../../docs/markform-reference.md docs/ && cp ../../docs/markform-apis.md docs/",
95
+ "copy-docs": "cp ../../README.md . && mkdir -p docs docs/skill && cp ../../docs/markform-spec.md docs/ && cp ../../docs/markform-reference.md docs/ && cp ../../docs/markform-apis.md docs/ && cp ../../docs/skill/SKILL.md docs/skill/",
96
96
  "build": "pnpm run copy-docs && tsdown",
97
97
  "dev": "tsdown --watch",
98
98
  "typecheck": "tsc -p tsconfig.json --noEmit",