@shivaedev/work-board 0.8.0 → 0.9.1

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 (166) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/README.md +20 -1
  3. package/assets/agent.js +14 -14
  4. package/assets/native.js +49 -27
  5. package/dist/browser/responses/Prompt.d.ts +10 -0
  6. package/dist/browser/responses/Prompt.d.ts.map +1 -0
  7. package/dist/browser/responses/Prompt.js +2 -0
  8. package/dist/browser/responses/Prompt.js.map +1 -0
  9. package/dist/browser/responses/answerBody.d.ts +4 -0
  10. package/dist/browser/responses/answerBody.d.ts.map +1 -0
  11. package/dist/browser/responses/answerBody.js +9 -0
  12. package/dist/browser/responses/answerBody.js.map +1 -0
  13. package/dist/browser/responses/draftSession.d.ts.map +1 -1
  14. package/dist/browser/responses/draftSession.js +23 -10
  15. package/dist/browser/responses/draftSession.js.map +1 -1
  16. package/dist/browser/responses/drafts.d.ts +5 -0
  17. package/dist/browser/responses/drafts.d.ts.map +1 -1
  18. package/dist/browser/responses/drafts.js +20 -1
  19. package/dist/browser/responses/drafts.js.map +1 -1
  20. package/dist/browser/responses/preview.d.ts +2 -1
  21. package/dist/browser/responses/preview.d.ts.map +1 -1
  22. package/dist/browser/responses/preview.js +3 -2
  23. package/dist/browser/responses/preview.js.map +1 -1
  24. package/dist/browser/responses/questionnaireControls.d.ts +10 -0
  25. package/dist/browser/responses/questionnaireControls.d.ts.map +1 -0
  26. package/dist/browser/responses/questionnaireControls.js +68 -0
  27. package/dist/browser/responses/questionnaireControls.js.map +1 -0
  28. package/dist/browser/responses/schema.d.ts +41 -0
  29. package/dist/browser/responses/schema.d.ts.map +1 -1
  30. package/dist/browser/responses/schema.js +11 -1
  31. package/dist/browser/responses/schema.js.map +1 -1
  32. package/dist/browser/responses/setup.d.ts.map +1 -1
  33. package/dist/browser/responses/setup.js +34 -4
  34. package/dist/browser/responses/setup.js.map +1 -1
  35. package/dist/browser/responses/submissionFields.d.ts +15 -0
  36. package/dist/browser/responses/submissionFields.d.ts.map +1 -0
  37. package/dist/browser/responses/submissionFields.js +14 -0
  38. package/dist/browser/responses/submissionFields.js.map +1 -0
  39. package/dist/browser/responses/submit.d.ts.map +1 -1
  40. package/dist/browser/responses/submit.js +3 -9
  41. package/dist/browser/responses/submit.js.map +1 -1
  42. package/dist/metadata/backlinks.d.ts.map +1 -1
  43. package/dist/metadata/backlinks.js +3 -0
  44. package/dist/metadata/backlinks.js.map +1 -1
  45. package/dist/metadata/fields.d.ts +6 -0
  46. package/dist/metadata/fields.d.ts.map +1 -1
  47. package/dist/metadata/problems.d.ts.map +1 -1
  48. package/dist/metadata/problems.js +1 -0
  49. package/dist/metadata/problems.js.map +1 -1
  50. package/dist/metadata/schema.d.ts +6 -0
  51. package/dist/metadata/schema.d.ts.map +1 -1
  52. package/dist/page/metadataDetails.js +1 -1
  53. package/dist/page/metadataDetails.js.map +1 -1
  54. package/dist/page/style.d.ts.map +1 -1
  55. package/dist/page/style.js +1 -0
  56. package/dist/page/style.js.map +1 -1
  57. package/dist/render/markdown.d.ts +1 -0
  58. package/dist/render/markdown.d.ts.map +1 -1
  59. package/dist/render/markdown.js +4 -2
  60. package/dist/render/markdown.js.map +1 -1
  61. package/dist/render/questionnaireDocuments.d.ts +3 -0
  62. package/dist/render/questionnaireDocuments.d.ts.map +1 -0
  63. package/dist/render/questionnaireDocuments.js +11 -0
  64. package/dist/render/questionnaireDocuments.js.map +1 -0
  65. package/dist/render/visualDocuments.d.ts.map +1 -1
  66. package/dist/render/visualDocuments.js +3 -0
  67. package/dist/render/visualDocuments.js.map +1 -1
  68. package/dist/responses/agent.d.ts +12 -0
  69. package/dist/responses/agent.d.ts.map +1 -1
  70. package/dist/responses/await.d.ts +6 -0
  71. package/dist/responses/await.d.ts.map +1 -1
  72. package/dist/responses/composerHtml.d.ts +27 -0
  73. package/dist/responses/composerHtml.d.ts.map +1 -0
  74. package/dist/responses/composerHtml.js +14 -0
  75. package/dist/responses/composerHtml.js.map +1 -0
  76. package/dist/responses/history.d.ts +20 -0
  77. package/dist/responses/history.d.ts.map +1 -0
  78. package/dist/responses/history.js +16 -0
  79. package/dist/responses/history.js.map +1 -0
  80. package/dist/responses/locate.d.ts.map +1 -1
  81. package/dist/responses/locate.js +5 -0
  82. package/dist/responses/locate.js.map +1 -1
  83. package/dist/responses/make.d.ts +3 -0
  84. package/dist/responses/make.d.ts.map +1 -0
  85. package/dist/responses/make.js +16 -0
  86. package/dist/responses/make.js.map +1 -0
  87. package/dist/responses/outcome.d.ts +6 -0
  88. package/dist/responses/outcome.d.ts.map +1 -1
  89. package/dist/responses/page.d.ts +1 -1
  90. package/dist/responses/page.d.ts.map +1 -1
  91. package/dist/responses/page.js +7 -10
  92. package/dist/responses/page.js.map +1 -1
  93. package/dist/responses/read.d.ts +6 -0
  94. package/dist/responses/read.d.ts.map +1 -1
  95. package/dist/responses/records.d.ts.map +1 -1
  96. package/dist/responses/records.js +4 -1
  97. package/dist/responses/records.js.map +1 -1
  98. package/dist/responses/retry.d.ts +12 -0
  99. package/dist/responses/retry.d.ts.map +1 -1
  100. package/dist/responses/service.d.ts +37 -1
  101. package/dist/responses/service.d.ts.map +1 -1
  102. package/dist/responses/service.js +19 -14
  103. package/dist/responses/service.js.map +1 -1
  104. package/dist/responses/template.d.ts +7 -0
  105. package/dist/responses/template.d.ts.map +1 -0
  106. package/dist/responses/template.js +58 -0
  107. package/dist/responses/template.js.map +1 -0
  108. package/dist/responses/templateHtml.d.ts +7 -0
  109. package/dist/responses/templateHtml.d.ts.map +1 -0
  110. package/dist/responses/templateHtml.js +18 -0
  111. package/dist/responses/templateHtml.js.map +1 -0
  112. package/dist/responses/templateLinks.d.ts +3 -0
  113. package/dist/responses/templateLinks.d.ts.map +1 -0
  114. package/dist/responses/templateLinks.js +45 -0
  115. package/dist/responses/templateLinks.js.map +1 -0
  116. package/dist/responses/templateNodes.d.ts +17 -0
  117. package/dist/responses/templateNodes.d.ts.map +1 -0
  118. package/dist/responses/templateNodes.js +47 -0
  119. package/dist/responses/templateNodes.js.map +1 -0
  120. package/dist/responses/validateSupersedes.d.ts +5 -0
  121. package/dist/responses/validateSupersedes.d.ts.map +1 -0
  122. package/dist/responses/validateSupersedes.js +21 -0
  123. package/dist/responses/validateSupersedes.js.map +1 -0
  124. package/dist/responses/validatedInput.d.ts +3 -0
  125. package/dist/responses/validatedInput.d.ts.map +1 -0
  126. package/dist/responses/validatedInput.js +43 -0
  127. package/dist/responses/validatedInput.js.map +1 -0
  128. package/dist/responses/waitFor.d.ts +6 -0
  129. package/dist/responses/waitFor.d.ts.map +1 -1
  130. package/dist/rpc/contract.d.ts +24 -0
  131. package/dist/rpc/contract.d.ts.map +1 -1
  132. package/dist/rpc/responseContract.d.ts +48 -0
  133. package/dist/rpc/responseContract.d.ts.map +1 -1
  134. package/dist/serve-cli.js +1 -1
  135. package/package.json +2 -2
  136. package/src/browser/responses/Prompt.ts +6 -0
  137. package/src/browser/responses/answerBody.ts +11 -0
  138. package/src/browser/responses/draftSession.ts +23 -10
  139. package/src/browser/responses/drafts.ts +25 -1
  140. package/src/browser/responses/preview.ts +4 -2
  141. package/src/browser/responses/questionnaireControls.ts +74 -0
  142. package/src/browser/responses/schema.ts +12 -1
  143. package/src/browser/responses/setup.ts +34 -4
  144. package/src/browser/responses/submissionFields.ts +15 -0
  145. package/src/browser/responses/submit.ts +3 -11
  146. package/src/metadata/backlinks.ts +3 -0
  147. package/src/metadata/problems.ts +1 -0
  148. package/src/page/metadataDetails.ts +1 -1
  149. package/src/page/style.ts +1 -0
  150. package/src/render/markdown.ts +5 -2
  151. package/src/render/questionnaireDocuments.ts +12 -0
  152. package/src/render/visualDocuments.ts +3 -0
  153. package/src/responses/composerHtml.ts +28 -0
  154. package/src/responses/history.ts +18 -0
  155. package/src/responses/locate.ts +5 -0
  156. package/src/responses/make.ts +17 -0
  157. package/src/responses/page.ts +7 -18
  158. package/src/responses/records.ts +6 -1
  159. package/src/responses/service.ts +26 -15
  160. package/src/responses/template.ts +72 -0
  161. package/src/responses/templateHtml.ts +26 -0
  162. package/src/responses/templateLinks.ts +43 -0
  163. package/src/responses/templateNodes.ts +55 -0
  164. package/src/responses/validateSupersedes.ts +24 -0
  165. package/src/responses/validatedInput.ts +45 -0
  166. package/src/serve-cli.ts +1 -1
@@ -0,0 +1,10 @@
1
+ export interface Prompt {
2
+ readonly id: string;
3
+ readonly mode: "one" | "many" | "text";
4
+ readonly options: readonly {
5
+ readonly id: string;
6
+ readonly source: string;
7
+ }[];
8
+ readonly source: string;
9
+ }
10
+ //# sourceMappingURL=Prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Prompt.d.ts","sourceRoot":"","sources":["../../../src/browser/responses/Prompt.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,MAAM;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,SAAS;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC9E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Prompt.js","sourceRoot":"","sources":["../../../src/browser/responses/Prompt.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import type { Prompt } from "./Prompt.ts";
2
+ import type { PromptAnswer } from "./schema.ts";
3
+ export declare function answerBody(prompts: readonly Prompt[], answers: readonly PromptAnswer[], note: string): string;
4
+ //# sourceMappingURL=answerBody.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"answerBody.d.ts","sourceRoot":"","sources":["../../../src/browser/responses/answerBody.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,wBAAgB,UAAU,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,YAAY,EAAE,EAAE,IAAI,EAAE,MAAM,UAOpG"}
@@ -0,0 +1,9 @@
1
+ export function answerBody(prompts, answers, note) {
2
+ const sections = prompts.map((prompt, index) => {
3
+ const answer = answers[index];
4
+ const chosen = prompt.options.filter((option) => answer?.selected.includes(option.id));
5
+ return `## Question: ${prompt.id}\n\n${prompt.source}\n\nSelected: ${chosen.map((option) => option.id).join(", ") || "No supplied option"}\n\n${chosen.map((option) => option.source).join("\n\n")}\n\n${answer?.text.trim() ? `Additional text:\n\n${answer.text}` : ""}`;
6
+ });
7
+ return `# Recorded response\n\n${sections.join("\n\n")}\n\n${note.trim() ? `## Overall response\n\n${note}` : ""}`.trim();
8
+ }
9
+ //# sourceMappingURL=answerBody.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"answerBody.js","sourceRoot":"","sources":["../../../src/browser/responses/answerBody.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,UAAU,CAAC,OAA0B,EAAE,OAAgC,EAAE,IAAY;IACpG,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QACvF,OAAO,gBAAgB,MAAM,CAAC,EAAE,OAAO,MAAM,CAAC,MAAM,iBAAiB,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,oBAAoB,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,uBAAuB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC5Q,CAAC,CAAC,CAAC;IACH,OAAO,0BAA0B,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;AAC3H,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"draftSession.d.ts","sourceRoot":"","sources":["../../../src/browser/responses/draftSession.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,KAAK,KAAK,EAA4B,MAAM,aAAa,CAAC;AAG9E,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI;;;qBA6DtH,KAAK;oBAxBN,OAAO,CAAC,KAAK,CAAC;EA8CrC"}
1
+ {"version":3,"file":"draftSession.d.ts","sourceRoot":"","sources":["../../../src/browser/responses/draftSession.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,KAAK,KAAK,EAA4B,MAAM,aAAa,CAAC;AAG9E,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI;;;qBAkEtH,KAAK;oBA5BN,OAAO,CAAC,KAAK,CAAC;EA0DrC"}
@@ -2,6 +2,7 @@ import { Clock, Effect } from "effect";
2
2
  import { DRAFT_AGE, encodeDrafts, readDrafts } from "./drafts.js";
3
3
  const states = new Map();
4
4
  export function draftSession(key, revision, storage, storageKey, report) {
5
+ const stateKey = `${JSON.stringify(storageKey)}:${key}`;
5
6
  function local() {
6
7
  if (!storage) {
7
8
  throw new Error("Draft storage unavailable");
@@ -22,12 +23,12 @@ export function draftSession(key, revision, storage, storageKey, report) {
22
23
  blocked = true;
23
24
  report("Draft history is unavailable or malformed. Keep a copy; edits remain in this window.");
24
25
  }
25
- const memory = states.get(key);
26
+ const memory = states.get(stateKey);
26
27
  if (memory && Effect.runSync(Clock.currentTimeMillis) - memory.updatedAt >= DRAFT_AGE) {
27
- states.delete(key);
28
+ states.delete(stateKey);
28
29
  report("A window draft expired after 30 days. Saved responses are unaffected.");
29
30
  }
30
- let current = states.get(key)
31
+ let current = states.get(stateKey)
31
32
  ?? drafts[key] ?? {
32
33
  author: "",
33
34
  body: "",
@@ -40,8 +41,8 @@ export function draftSession(key, revision, storage, storageKey, report) {
40
41
  report("Source changed since this draft. Your text is retained; review the new source and preview to bind it to this revision.");
41
42
  }
42
43
  function update(patch) {
43
- current = { ...(states.get(key) ?? current), ...patch, updatedAt: Effect.runSync(Clock.currentTimeMillis) };
44
- states.set(key, current);
44
+ current = { ...(states.get(stateKey) ?? current), ...patch, updatedAt: Effect.runSync(Clock.currentTimeMillis) };
45
+ states.set(stateKey, current);
45
46
  try {
46
47
  if (blocked) {
47
48
  throw new Error("Unknown draft history");
@@ -58,7 +59,11 @@ export function draftSession(key, revision, storage, storageKey, report) {
58
59
  try {
59
60
  local().removeItem(storageKey);
60
61
  blocked = false;
61
- states.clear();
62
+ for (const storedKey of states.keys()) {
63
+ if (storedKey.startsWith(`${JSON.stringify(storageKey)}:`)) {
64
+ states.delete(storedKey);
65
+ }
66
+ }
62
67
  report("Workspace drafts cleared. Saved responses are unchanged; this visible text remains until you navigate away.");
63
68
  }
64
69
  catch {
@@ -66,14 +71,14 @@ export function draftSession(key, revision, storage, storageKey, report) {
66
71
  }
67
72
  }
68
73
  function saved(pending) {
69
- if (states.get(key) !== pending) {
70
- const live = states.get(key);
74
+ if (states.get(stateKey) !== pending) {
75
+ const live = states.get(stateKey);
71
76
  if (live?.id === pending.id) {
72
77
  update({ id: `response.${crypto.randomUUID()}` });
73
78
  }
74
79
  return false;
75
80
  }
76
- states.delete(key);
81
+ states.delete(stateKey);
77
82
  try {
78
83
  const latest = readDrafts(local().getItem(storageKey), Effect.runSync(Clock.currentTimeMillis)).drafts;
79
84
  if (latest[key]?.id === pending.id) {
@@ -84,7 +89,15 @@ export function draftSession(key, revision, storage, storageKey, report) {
84
89
  catch {
85
90
  report("Saved response confirmed, but its browser draft could not be cleared.");
86
91
  }
87
- current = { ...current, body: "", id: `response.${crypto.randomUUID()}`, updatedAt: Effect.runSync(Clock.currentTimeMillis) };
92
+ current = {
93
+ ...current,
94
+ answers: undefined,
95
+ body: "",
96
+ id: `response.${crypto.randomUUID()}`,
97
+ recovery: undefined,
98
+ supersedes: undefined,
99
+ updatedAt: Effect.runSync(Clock.currentTimeMillis),
100
+ };
88
101
  return true;
89
102
  }
90
103
  return { clear, current: () => current, saved, update };
@@ -1 +1 @@
1
- {"version":3,"file":"draftSession.js","sourceRoot":"","sources":["../../../src/browser/responses/draftSession.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"draftSession.js","sourceRoot":"","sources":["../../../src/browser/responses/draftSession.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,15 @@
1
+ import { type PromptAnswer } from "./schema.ts";
1
2
  export declare const DRAFT_BYTES: number;
2
3
  export declare const DRAFT_AGE: number;
3
4
  export interface Draft {
5
+ readonly answers?: readonly PromptAnswer[] | undefined;
4
6
  readonly author: string;
5
7
  readonly body: string;
6
8
  readonly id: string;
9
+ readonly question?: string | undefined;
10
+ readonly recovery?: string | undefined;
7
11
  readonly revision: string;
12
+ readonly supersedes?: string | undefined;
8
13
  readonly type: string;
9
14
  readonly updatedAt: number;
10
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"drafts.d.ts","sourceRoot":"","sources":["../../../src/browser/responses/drafts.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,QAAkB,CAAC;AAC3C,eAAO,MAAM,SAAS,QAA2B,CAAC;AAClD,MAAM,WAAW,KAAK;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC3B;AACD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAwC/G;AACD,wBAAgB,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,GAAG,MAAM,CAM5E"}
1
+ {"version":3,"file":"drafts.d.ts","sourceRoot":"","sources":["../../../src/browser/responses/drafts.ts"],"names":[],"mappings":"AAEA,OAAO,EAAW,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAEzD,eAAO,MAAM,WAAW,QAAkB,CAAC;AAC3C,eAAO,MAAM,SAAS,QAA2B,CAAC;AAClD,MAAM,WAAW,KAAK;IACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,YAAY,EAAE,GAAG,SAAS,CAAC;IACvD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC3B;AASD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAgD/G;AACD,wBAAgB,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,GAAG,MAAM,CAM5E"}
@@ -1,5 +1,16 @@
1
+ import { Schema } from "effect";
2
+ import { Identity } from "#path/Identity.ts";
3
+ import { Answers } from "./schema.js";
1
4
  export const DRAFT_BYTES = 2 * 1024 * 1024;
2
5
  export const DRAFT_AGE = 30 * 24 * 60 * 60 * 1000;
6
+ function extraFields(entry) {
7
+ return {
8
+ ...("question" in entry ? { question: Schema.decodeUnknownSync(Identity)(entry.question) } : {}),
9
+ ...("recovery" in entry ? { recovery: Schema.decodeUnknownSync(Schema.String)(entry.recovery) } : {}),
10
+ ...("answers" in entry ? { answers: Schema.decodeUnknownSync(Answers, { onExcessProperty: "error" })(entry.answers) } : {}),
11
+ ...("supersedes" in entry ? { supersedes: Schema.decodeUnknownSync(Identity)(entry.supersedes) } : {}),
12
+ };
13
+ }
3
14
  export function readDrafts(raw, now) {
4
15
  if (raw === null) {
5
16
  return { drafts: {}, expired: false };
@@ -35,7 +46,15 @@ export function readDrafts(raw, now) {
35
46
  expired = true;
36
47
  continue;
37
48
  }
38
- drafts[key] = { author: entry.author, body: entry.body, id: entry.id, revision: entry.revision, type: entry.type, updatedAt: entry.updatedAt };
49
+ drafts[key] = {
50
+ ...extraFields(entry),
51
+ author: entry.author,
52
+ body: entry.body,
53
+ id: entry.id,
54
+ revision: entry.revision,
55
+ type: entry.type,
56
+ updatedAt: entry.updatedAt,
57
+ };
39
58
  }
40
59
  return { drafts, expired };
41
60
  }
@@ -1 +1 @@
1
- {"version":3,"file":"drafts.js","sourceRoot":"","sources":["../../../src/browser/responses/drafts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"drafts.js","sourceRoot":"","sources":["../../../src/browser/responses/drafts.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  import type { Draft } from "./drafts.ts";
2
- export declare function responsePreview(draft: Draft, question: string): string;
2
+ import type { Prompt } from "./Prompt.ts";
3
+ export declare function responsePreview(draft: Draft, question: string, prompts?: readonly Prompt[]): string;
3
4
  //# sourceMappingURL=preview.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../../../src/browser/responses/preview.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEtE"}
1
+ {"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../../../src/browser/responses/preview.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,SAAS,MAAM,EAAO,GAAG,MAAM,CAEvG"}
@@ -1,4 +1,5 @@
1
- export function responsePreview(draft, question) {
2
- return `New file: responses/${draft.id}.md\nRegistration (if needed): responses/${question}.md\nRecorded time is assigned by the server when saving.\n\n---\n${JSON.stringify({ id: draft.id, kind: "response", response: { author: draft.author, question, reviewedRevision: draft.revision, type: draft.type } }, null, 2)}\n---\n${draft.body}`;
1
+ import { answerBody } from "./answerBody.js";
2
+ export function responsePreview(draft, question, prompts = []) {
3
+ return `New file: responses/${draft.id}.md\nRegistration (if needed): responses/${question}.md\nRecorded time is assigned by the server when saving.\n\n---\n${JSON.stringify({ id: draft.id, kind: "response", response: { answers: draft.answers, author: draft.author, question, reviewedRevision: draft.revision, supersedes: draft.supersedes, type: draft.type } }, null, 2)}\n---\n${draft.answers ? answerBody(prompts, draft.answers, draft.body) : draft.body}`;
3
4
  }
4
5
  //# sourceMappingURL=preview.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"preview.js","sourceRoot":"","sources":["../../../src/browser/responses/preview.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,eAAe,CAAC,KAAY,EAAE,QAAgB;IAC7D,OAAO,uBAAuB,KAAK,CAAC,EAAE,4CAA4C,QAAQ,qEAAqE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,KAAK,CAAC,IAAI,EAAE,CAAC;AACpV,CAAC"}
1
+ {"version":3,"file":"preview.js","sourceRoot":"","sources":["../../../src/browser/responses/preview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAI7C,MAAM,UAAU,eAAe,CAAC,KAAY,EAAE,QAAgB,EAAE,UAA6B,EAAE;IAC9F,OAAO,uBAAuB,KAAK,CAAC,EAAE,4CAA4C,QAAQ,qEAAqE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,KAAK,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AAC3c,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { Draft } from "./drafts.ts";
2
+ import type { Prompt } from "./Prompt.ts";
3
+ import type { PromptAnswer } from "./schema.ts";
4
+ export declare function questionnaireControls(form: HTMLFormElement): {
5
+ models: Prompt[];
6
+ read: () => readonly PromptAnswer[] | undefined;
7
+ restore: (draft: Draft, revision: string) => string | undefined;
8
+ validate: (type: string) => void;
9
+ };
10
+ //# sourceMappingURL=questionnaireControls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"questionnaireControls.d.ts","sourceRoot":"","sources":["../../../src/browser/responses/questionnaireControls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAchD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,eAAe;;gBAiBzC,SAAS,YAAY,EAAE,GAAG,SAAS;qBAS5B,KAAK,YAAY,MAAM;qBAcvB,MAAM;EAiB9B"}
@@ -0,0 +1,68 @@
1
+ function restoreAnswers(fields, draft, same) {
2
+ for (const field of fields) {
3
+ const answer = draft.answers?.find((entry) => entry.prompt === field.dataset.prompt);
4
+ for (const input of field.querySelectorAll("input")) {
5
+ input.checked = same && (answer?.selected.includes(input.value) ?? false);
6
+ }
7
+ const text = field.querySelector("textarea");
8
+ if (text) {
9
+ text.value = answer?.text ?? "";
10
+ }
11
+ }
12
+ }
13
+ export function questionnaireControls(form) {
14
+ function modeOf(field) {
15
+ if (field.dataset.mode === "text") {
16
+ return "text";
17
+ }
18
+ return field.dataset.mode === "many" ? "many" : "one";
19
+ }
20
+ const fields = [...form.querySelectorAll("fieldset[data-prompt]")];
21
+ const models = fields.map((field) => ({
22
+ id: field.dataset.prompt ?? "",
23
+ mode: modeOf(field),
24
+ options: [...field.querySelectorAll("input[data-option-source]")].map((input) => ({
25
+ id: input.value,
26
+ source: input.dataset.optionSource ?? "",
27
+ })),
28
+ source: field.dataset.source ?? "",
29
+ }));
30
+ function read() {
31
+ return fields.length === 0
32
+ ? undefined
33
+ : fields.map((field) => ({
34
+ prompt: field.dataset.prompt ?? "",
35
+ selected: [...field.querySelectorAll("input:checked")].map((input) => input.value),
36
+ text: field.querySelector("textarea")?.value ?? "",
37
+ }));
38
+ }
39
+ function restore(draft, revision) {
40
+ const same = draft.revision === revision && (draft.question === undefined || draft.question === form.dataset.question);
41
+ restoreAnswers(fields, draft, same);
42
+ const recovery = form.querySelector("#response-draft-recovery");
43
+ const retained = !same && draft.answers
44
+ ? `Earlier template answers (selections cleared; review before choosing again):\n${JSON.stringify(draft.answers, null, 2)}\n${draft.recovery ?? ""}`
45
+ : draft.recovery;
46
+ if (recovery) {
47
+ recovery.textContent = retained ?? "";
48
+ recovery.hidden = !retained;
49
+ }
50
+ return retained;
51
+ }
52
+ function validate(type) {
53
+ for (const field of fields) {
54
+ const text = field.querySelector("textarea");
55
+ text?.setCustomValidity(type === "answer" && !text.value.trim() && !field.querySelector("input:checked") ? "Choose an option or answer in your own words." : "");
56
+ }
57
+ }
58
+ for (const field of fields) {
59
+ field.querySelector("[data-clear-choices]")?.addEventListener("click", () => {
60
+ for (const input of field.querySelectorAll("input")) {
61
+ input.checked = false;
62
+ }
63
+ form.dispatchEvent(new Event("input", { bubbles: true }));
64
+ });
65
+ }
66
+ return { models, read, restore, validate };
67
+ }
68
+ //# sourceMappingURL=questionnaireControls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"questionnaireControls.js","sourceRoot":"","sources":["../../../src/browser/responses/questionnaireControls.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,17 @@
1
1
  import { Schema } from "effect";
2
2
  export declare const Revision: Schema.String;
3
3
  export declare const ResponseKind: Schema.Literals<readonly ["answer", "clarify", "not_now"]>;
4
+ export declare const PromptAnswer: Schema.Struct<{
5
+ readonly prompt: Schema.String;
6
+ readonly selected: Schema.$Array<Schema.String>;
7
+ readonly text: Schema.String;
8
+ }>;
9
+ export declare const Answers: Schema.$Array<Schema.Struct<{
10
+ readonly prompt: Schema.String;
11
+ readonly selected: Schema.$Array<Schema.String>;
12
+ readonly text: Schema.String;
13
+ }>>;
14
+ export type PromptAnswer = typeof PromptAnswer.Type;
4
15
  export declare const QuestionRecord: Schema.Struct<{
5
16
  readonly deadline: Schema.Number;
6
17
  readonly item: Schema.String;
@@ -11,10 +22,16 @@ export declare const QuestionRecord: Schema.Struct<{
11
22
  readonly source: Schema.String;
12
23
  }>;
13
24
  export declare const ResponseRecord: Schema.Struct<{
25
+ readonly answers: Schema.optional<Schema.$Array<Schema.Struct<{
26
+ readonly prompt: Schema.String;
27
+ readonly selected: Schema.$Array<Schema.String>;
28
+ readonly text: Schema.String;
29
+ }>>>;
14
30
  readonly author: Schema.String;
15
31
  readonly question: Schema.String;
16
32
  readonly recordedAt: Schema.Number;
17
33
  readonly reviewedRevision: Schema.String;
34
+ readonly supersedes: Schema.optional<Schema.String>;
18
35
  readonly type: Schema.Literals<readonly ["answer", "clarify", "not_now"]>;
19
36
  }>;
20
37
  export declare const QuestionPreview: Schema.Struct<{
@@ -44,10 +61,16 @@ export declare const RecordedResponse: Schema.Struct<{
44
61
  readonly body: Schema.String;
45
62
  readonly id: Schema.String;
46
63
  readonly response: Schema.Struct<{
64
+ readonly answers: Schema.optional<Schema.$Array<Schema.Struct<{
65
+ readonly prompt: Schema.String;
66
+ readonly selected: Schema.$Array<Schema.String>;
67
+ readonly text: Schema.String;
68
+ }>>>;
47
69
  readonly author: Schema.String;
48
70
  readonly question: Schema.String;
49
71
  readonly recordedAt: Schema.Number;
50
72
  readonly reviewedRevision: Schema.String;
73
+ readonly supersedes: Schema.optional<Schema.String>;
51
74
  readonly type: Schema.Literals<readonly ["answer", "clarify", "not_now"]>;
52
75
  }>;
53
76
  }>;
@@ -69,10 +92,16 @@ export declare const Reading: Schema.Struct<{
69
92
  readonly body: Schema.String;
70
93
  readonly id: Schema.String;
71
94
  readonly response: Schema.Struct<{
95
+ readonly answers: Schema.optional<Schema.$Array<Schema.Struct<{
96
+ readonly prompt: Schema.String;
97
+ readonly selected: Schema.$Array<Schema.String>;
98
+ readonly text: Schema.String;
99
+ }>>>;
72
100
  readonly author: Schema.String;
73
101
  readonly question: Schema.String;
74
102
  readonly recordedAt: Schema.Number;
75
103
  readonly reviewedRevision: Schema.String;
104
+ readonly supersedes: Schema.optional<Schema.String>;
76
105
  readonly type: Schema.Literals<readonly ["answer", "clarify", "not_now"]>;
77
106
  }>;
78
107
  }>>;
@@ -96,10 +125,16 @@ export declare const WaitReading: Schema.Struct<{
96
125
  readonly body: Schema.String;
97
126
  readonly id: Schema.String;
98
127
  readonly response: Schema.Struct<{
128
+ readonly answers: Schema.optional<Schema.$Array<Schema.Struct<{
129
+ readonly prompt: Schema.String;
130
+ readonly selected: Schema.$Array<Schema.String>;
131
+ readonly text: Schema.String;
132
+ }>>>;
99
133
  readonly author: Schema.String;
100
134
  readonly question: Schema.String;
101
135
  readonly recordedAt: Schema.Number;
102
136
  readonly reviewedRevision: Schema.String;
137
+ readonly supersedes: Schema.optional<Schema.String>;
103
138
  readonly type: Schema.Literals<readonly ["answer", "clarify", "not_now"]>;
104
139
  }>;
105
140
  }>>;
@@ -113,10 +148,16 @@ declare const ResponseFailed_base: Schema.Class<ResponseFailed, Schema.TaggedStr
113
148
  export declare class ResponseFailed extends ResponseFailed_base {
114
149
  }
115
150
  export declare const DraftInput: Schema.Struct<{
151
+ readonly answers: Schema.optional<Schema.$Array<Schema.Struct<{
152
+ readonly prompt: Schema.String;
153
+ readonly selected: Schema.$Array<Schema.String>;
154
+ readonly text: Schema.String;
155
+ }>>>;
116
156
  readonly author: Schema.String;
117
157
  readonly body: Schema.String;
118
158
  readonly id: Schema.String;
119
159
  readonly question: Schema.String;
160
+ readonly supersedes: Schema.optional<Schema.String>;
120
161
  readonly type: Schema.Literals<readonly ["answer", "clarify", "not_now"]>;
121
162
  }>;
122
163
  export type Question = typeof Question.Type;
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/browser/responses/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,eAAO,MAAM,QAAQ,eAA0D,CAAC;AAChF,eAAO,MAAM,YAAY,4DAAoD,CAAC;AAC9E,eAAO,MAAM,cAAc;;;;;;;;EAQzB,CAAC;AACH,eAAO,MAAM,cAAc;;;;;;EAMzB,CAAC;AACH,eAAO,MAAM,eAAe;;;;;;;;EAQ1B,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,eAAe,CAAC,IAAI,CAAC;AAC1D,eAAO,MAAM,QAAQ;;;;;;;;;;;;EAAoF,CAAC;AAC1G,eAAO,MAAM,gBAAgB;;;;;;;;;;EAAiF,CAAC;AAC/G,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;EAAmF,CAAC;AACxG,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;EAA8G,CAAC;AACvI,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,IAAI,CAAC;;;;;;AAClD,qBAAa,cAAe,SAAQ,mBAIlC;CAAG;AACL,eAAO,MAAM,UAAU;;;;;;EAMrB,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC,IAAI,CAAC;AAC5C,MAAM,MAAM,gBAAgB,GAAG,OAAO,gBAAgB,CAAC,IAAI,CAAC;AAC5D,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAC;AAC1C,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/browser/responses/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,eAAO,MAAM,QAAQ,eAA0D,CAAC;AAChF,eAAO,MAAM,YAAY,4DAAoD,CAAC;AAC9E,eAAO,MAAM,YAAY;;;;EAIvB,CAAC;AACH,eAAO,MAAM,OAAO;;;;GAA2D,CAAC;AAChF,MAAM,MAAM,YAAY,GAAG,OAAO,YAAY,CAAC,IAAI,CAAC;AACpD,eAAO,MAAM,cAAc;;;;;;;;EAQzB,CAAC;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;EAQzB,CAAC;AACH,eAAO,MAAM,eAAe;;;;;;;;EAQ1B,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,eAAe,CAAC,IAAI,CAAC;AAC1D,eAAO,MAAM,QAAQ;;;;;;;;;;;;EAAoF,CAAC;AAC1G,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;EAAiF,CAAC;AAC/G,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAmF,CAAC;AACxG,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAA8G,CAAC;AACvI,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,IAAI,CAAC;;;;;;AAClD,qBAAa,cAAe,SAAQ,mBAIlC;CAAG;AACL,eAAO,MAAM,UAAU;;;;;;;;;;;;EAQrB,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC,IAAI,CAAC;AAC5C,MAAM,MAAM,gBAAgB,GAAG,OAAO,gBAAgB,CAAC,IAAI,CAAC;AAC5D,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAC;AAC1C,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAC"}
@@ -2,6 +2,12 @@ import { Schema } from "effect";
2
2
  import { Identity } from "#path/Identity.ts";
3
3
  export const Revision = Schema.String.check(Schema.isPattern(/^[a-f\d]{64}$/u));
4
4
  export const ResponseKind = Schema.Literals(["answer", "clarify", "not_now"]);
5
+ export const PromptAnswer = Schema.Struct({
6
+ prompt: Identity.check(Schema.isMaxLength(128)),
7
+ selected: Schema.Array(Identity.check(Schema.isMaxLength(128))).check(Schema.isMaxLength(32)),
8
+ text: Schema.String.check(Schema.isMaxLength(8192)),
9
+ });
10
+ export const Answers = Schema.Array(PromptAnswer).check(Schema.isMaxLength(32));
5
11
  export const QuestionRecord = Schema.Struct({
6
12
  deadline: Schema.Number.check(Schema.isFinite(), Schema.isGreaterThanOrEqualTo(0), Schema.isLessThanOrEqualTo(8_640_000_000_000_000)),
7
13
  item: Identity,
@@ -12,10 +18,12 @@ export const QuestionRecord = Schema.Struct({
12
18
  source: Schema.String,
13
19
  });
14
20
  export const ResponseRecord = Schema.Struct({
21
+ answers: Schema.optional(Answers),
15
22
  author: Schema.String.check(Schema.isPattern(/\S/u), Schema.isMaxLength(200)),
16
23
  question: Identity,
17
24
  recordedAt: Schema.Number.check(Schema.isFinite(), Schema.isGreaterThanOrEqualTo(0), Schema.isLessThanOrEqualTo(8_640_000_000_000_000)),
18
25
  reviewedRevision: Revision,
26
+ supersedes: Schema.optional(Identity),
19
27
  type: ResponseKind,
20
28
  });
21
29
  export const QuestionPreview = Schema.Struct({
@@ -38,10 +46,12 @@ export class ResponseFailed extends Schema.TaggedError()("ResponseFailed", {
38
46
  }) {
39
47
  }
40
48
  export const DraftInput = Schema.Struct({
49
+ answers: Schema.optional(Answers),
41
50
  author: ResponseRecord.fields.author,
42
- body: Schema.String.check(Schema.isPattern(/\S/u), Schema.isMaxLength(32_768)),
51
+ body: Schema.String.check(Schema.isMaxLength(32_768)),
43
52
  id: Identity,
44
53
  question: Identity,
54
+ supersedes: Schema.optional(Identity),
45
55
  type: ResponseKind,
46
56
  });
47
57
  //# sourceMappingURL=schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/browser/responses/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/browser/responses/schema.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/browser/responses/setup.ts"],"names":[],"mappings":"AAiGA,wBAAgB,cAAc,SAI7B"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/browser/responses/setup.ts"],"names":[],"mappings":"AA+HA,wBAAgB,cAAc,SAI7B"}
@@ -1,5 +1,6 @@
1
1
  import { draftSession } from "./draftSession.js";
2
2
  import { responsePreview } from "./preview.js";
3
+ import { questionnaireControls } from "./questionnaireControls.js";
3
4
  import { submitResponse } from "./submit.js";
4
5
  function attach() {
5
6
  const doc = document.getElementById("doc");
@@ -15,6 +16,7 @@ function attach() {
15
16
  const author = form.elements.namedItem("author");
16
17
  const body = form.elements.namedItem("body");
17
18
  const type = form.elements.namedItem("type");
19
+ const supersedes = form.elements.namedItem("supersedes");
18
20
  const submit = form.querySelector("#response-submit");
19
21
  const preview = form.querySelector("#response-preview-content");
20
22
  const clear = form.querySelector("#response-clear");
@@ -35,6 +37,7 @@ function attach() {
35
37
  const item = form.dataset.item ?? "";
36
38
  const request = form.dataset.request ?? "";
37
39
  const revision = form.dataset.revision ?? "";
40
+ const questionId = form.dataset.question ?? "";
38
41
  const key = `${item}/${request}`;
39
42
  const storage = `work-board:drafts:${document.documentElement.dataset.workspace}`;
40
43
  let storageApi;
@@ -48,12 +51,29 @@ function attach() {
48
51
  status.textContent = message;
49
52
  });
50
53
  let draft = drafts.current();
54
+ const controls = questionnaireControls(form);
55
+ let recovery = controls.restore(draft, revision);
56
+ if (draft.question && draft.question !== questionId && draft.revision === revision) {
57
+ status.textContent = "Source moved since this draft. Text is retained and selections cleared; review the source and preview before responding.";
58
+ }
59
+ if (supersedes instanceof HTMLSelectElement) {
60
+ supersedes.value = draft.supersedes ?? "";
61
+ }
51
62
  author.value = draft.author;
52
63
  body.value = draft.body;
53
64
  type.value = draft.type;
54
65
  const fields = { author, body, type };
55
66
  function save() {
56
- draft = drafts.update({ author: fields.author.value, body: fields.body.value, revision: draft.revision, type: fields.type.value });
67
+ draft = drafts.update({
68
+ answers: controls.read(),
69
+ author: fields.author.value,
70
+ body: fields.body.value,
71
+ question: draft.question ?? questionId,
72
+ recovery,
73
+ revision: draft.revision,
74
+ supersedes: supersedes instanceof HTMLSelectElement ? supersedes.value || undefined : undefined,
75
+ type: fields.type.value,
76
+ });
57
77
  }
58
78
  form.addEventListener("input", () => {
59
79
  save();
@@ -63,29 +83,39 @@ function attach() {
63
83
  previewButton.disabled = false;
64
84
  clear.disabled = false;
65
85
  previewButton.addEventListener("click", () => {
86
+ controls.validate(type.value);
66
87
  draft = drafts.update({
88
+ answers: controls.read(),
67
89
  author: author.value,
68
90
  body: body.value,
69
- id: draft.revision === revision ? drafts.current().id : `response.${crypto.randomUUID()}`,
91
+ id: draft.revision === revision && (!draft.question || draft.question === questionId) ? drafts.current().id : `response.${crypto.randomUUID()}`,
92
+ question: questionId,
93
+ recovery,
70
94
  revision,
95
+ supersedes: supersedes instanceof HTMLSelectElement ? supersedes.value || undefined : undefined,
71
96
  type: type.value,
72
97
  });
73
- preview.textContent = responsePreview(draft, form.dataset.question ?? "");
98
+ preview.textContent = responsePreview(draft, questionId ?? "", controls.models);
74
99
  preview.hidden = false;
75
100
  submit.disabled = form.dataset.writable !== "true" || !form.checkValidity();
76
101
  });
77
102
  clear.addEventListener("click", drafts.clear);
78
103
  form.addEventListener("submit", async (event) => {
79
104
  event.preventDefault();
80
- if (submit.disabled || draft.revision !== revision || !form.reportValidity()) {
105
+ if (submit.disabled || draft.revision !== revision || draft.question !== questionId || !form.reportValidity()) {
81
106
  return;
82
107
  }
83
108
  submit.disabled = true;
84
109
  previewButton.disabled = true;
85
110
  if (await submitResponse(form, status, drafts, draft)) {
86
111
  draft = drafts.current();
112
+ recovery = draft.recovery;
87
113
  if (form.isConnected) {
88
114
  body.value = "";
115
+ controls.restore(draft, revision);
116
+ if (supersedes instanceof HTMLSelectElement) {
117
+ supersedes.value = "";
118
+ }
89
119
  }
90
120
  }
91
121
  previewButton.disabled = false;