@shivaedev/work-board 0.7.2 → 0.9.0

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 (277) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/README.md +110 -2
  3. package/assets/agent.js +37 -0
  4. package/assets/native.js +54 -25
  5. package/dist/board.d.ts +1 -0
  6. package/dist/board.d.ts.map +1 -1
  7. package/dist/board.js +15 -2
  8. package/dist/board.js.map +1 -1
  9. package/dist/browser/client.d.ts +19 -79
  10. package/dist/browser/client.d.ts.map +1 -1
  11. package/dist/browser/client.js +12 -1
  12. package/dist/browser/client.js.map +1 -1
  13. package/dist/browser/entry.d.ts +3 -0
  14. package/dist/browser/entry.d.ts.map +1 -0
  15. package/dist/browser/entry.js +7 -0
  16. package/dist/browser/entry.js.map +1 -0
  17. package/dist/browser/responses/Prompt.d.ts +10 -0
  18. package/dist/browser/responses/Prompt.d.ts.map +1 -0
  19. package/dist/browser/responses/Prompt.js +2 -0
  20. package/dist/browser/responses/Prompt.js.map +1 -0
  21. package/dist/browser/responses/answerBody.d.ts +4 -0
  22. package/dist/browser/responses/answerBody.d.ts.map +1 -0
  23. package/dist/browser/responses/answerBody.js +9 -0
  24. package/dist/browser/responses/answerBody.js.map +1 -0
  25. package/dist/browser/responses/draftSession.d.ts +8 -0
  26. package/dist/browser/responses/draftSession.d.ts.map +1 -0
  27. package/dist/browser/responses/draftSession.js +105 -0
  28. package/dist/browser/responses/draftSession.js.map +1 -0
  29. package/dist/browser/responses/drafts.d.ts +21 -0
  30. package/dist/browser/responses/drafts.d.ts.map +1 -0
  31. package/dist/browser/responses/drafts.js +68 -0
  32. package/dist/browser/responses/drafts.js.map +1 -0
  33. package/dist/browser/responses/preview.d.ts +4 -0
  34. package/dist/browser/responses/preview.d.ts.map +1 -0
  35. package/dist/browser/responses/preview.js +5 -0
  36. package/dist/browser/responses/preview.js.map +1 -0
  37. package/dist/browser/responses/questionnaireControls.d.ts +10 -0
  38. package/dist/browser/responses/questionnaireControls.d.ts.map +1 -0
  39. package/dist/browser/responses/questionnaireControls.js +68 -0
  40. package/dist/browser/responses/questionnaireControls.js.map +1 -0
  41. package/dist/browser/responses/schema.d.ts +168 -0
  42. package/dist/browser/responses/schema.d.ts.map +1 -0
  43. package/dist/browser/responses/schema.js +57 -0
  44. package/dist/browser/responses/schema.js.map +1 -0
  45. package/dist/browser/responses/setup.d.ts +2 -0
  46. package/dist/browser/responses/setup.d.ts.map +1 -0
  47. package/dist/browser/responses/setup.js +129 -0
  48. package/dist/browser/responses/setup.js.map +1 -0
  49. package/dist/browser/responses/submissionFields.d.ts +15 -0
  50. package/dist/browser/responses/submissionFields.d.ts.map +1 -0
  51. package/dist/browser/responses/submissionFields.js +14 -0
  52. package/dist/browser/responses/submissionFields.js.map +1 -0
  53. package/dist/browser/responses/submit.d.ts +4 -0
  54. package/dist/browser/responses/submit.d.ts.map +1 -0
  55. package/dist/browser/responses/submit.js +30 -0
  56. package/dist/browser/responses/submit.js.map +1 -0
  57. package/dist/browser/session.d.ts +1 -79
  58. package/dist/browser/session.d.ts.map +1 -1
  59. package/dist/cli.d.ts.map +1 -1
  60. package/dist/cli.js +24 -15
  61. package/dist/cli.js.map +1 -1
  62. package/dist/files/changes.d.ts +1 -0
  63. package/dist/files/changes.d.ts.map +1 -1
  64. package/dist/files/changes.js +1 -1
  65. package/dist/files/changes.js.map +1 -1
  66. package/dist/http/respond.d.ts.map +1 -1
  67. package/dist/http/respond.js +2 -0
  68. package/dist/http/respond.js.map +1 -1
  69. package/dist/metadata/backlinks.d.ts.map +1 -1
  70. package/dist/metadata/backlinks.js +5 -0
  71. package/dist/metadata/backlinks.js.map +1 -1
  72. package/dist/metadata/fields.d.ts +23 -1
  73. package/dist/metadata/fields.d.ts.map +1 -1
  74. package/dist/metadata/problems.d.ts.map +1 -1
  75. package/dist/metadata/problems.js +3 -0
  76. package/dist/metadata/problems.js.map +1 -1
  77. package/dist/metadata/schema.d.ts +23 -1
  78. package/dist/metadata/schema.d.ts.map +1 -1
  79. package/dist/metadata/schema.js +6 -2
  80. package/dist/metadata/schema.js.map +1 -1
  81. package/dist/page/attentionDetails.d.ts.map +1 -1
  82. package/dist/page/attentionDetails.js +2 -1
  83. package/dist/page/attentionDetails.js.map +1 -1
  84. package/dist/page/metadataDetails.d.ts.map +1 -1
  85. package/dist/page/metadataDetails.js +6 -0
  86. package/dist/page/metadataDetails.js.map +1 -1
  87. package/dist/page/navigationScript.js +1 -1
  88. package/dist/page/shell.d.ts +1 -1
  89. package/dist/page/shell.d.ts.map +1 -1
  90. package/dist/page/shell.js.map +1 -1
  91. package/dist/page/style.d.ts.map +1 -1
  92. package/dist/page/style.js +3 -1
  93. package/dist/page/style.js.map +1 -1
  94. package/dist/page/swap.d.ts +1 -1
  95. package/dist/page/swap.d.ts.map +1 -1
  96. package/dist/page/swap.js +3 -0
  97. package/dist/page/swap.js.map +1 -1
  98. package/dist/path/Identity.d.ts +3 -0
  99. package/dist/path/Identity.d.ts.map +1 -0
  100. package/dist/path/Identity.js +3 -0
  101. package/dist/path/Identity.js.map +1 -0
  102. package/dist/render/markdown.d.ts +1 -0
  103. package/dist/render/markdown.d.ts.map +1 -1
  104. package/dist/render/markdown.js +4 -2
  105. package/dist/render/markdown.js.map +1 -1
  106. package/dist/render/questionnaireDocuments.d.ts +3 -0
  107. package/dist/render/questionnaireDocuments.d.ts.map +1 -0
  108. package/dist/render/questionnaireDocuments.js +11 -0
  109. package/dist/render/questionnaireDocuments.js.map +1 -0
  110. package/dist/render/visualDocuments.d.ts.map +1 -1
  111. package/dist/render/visualDocuments.js +3 -0
  112. package/dist/render/visualDocuments.js.map +1 -1
  113. package/dist/responses/agent-cli.d.ts +2 -0
  114. package/dist/responses/agent-cli.d.ts.map +1 -0
  115. package/dist/responses/agent-cli.js +31 -0
  116. package/dist/responses/agent-cli.js.map +1 -0
  117. package/dist/responses/agent.d.ts +80 -0
  118. package/dist/responses/agent.d.ts.map +1 -0
  119. package/dist/responses/agent.js +49 -0
  120. package/dist/responses/agent.js.map +1 -0
  121. package/dist/responses/await.d.ts +39 -0
  122. package/dist/responses/await.d.ts.map +1 -0
  123. package/dist/responses/await.js +21 -0
  124. package/dist/responses/await.js.map +1 -0
  125. package/dist/responses/composerHtml.d.ts +27 -0
  126. package/dist/responses/composerHtml.d.ts.map +1 -0
  127. package/dist/responses/composerHtml.js +14 -0
  128. package/dist/responses/composerHtml.js.map +1 -0
  129. package/dist/responses/flags.d.ts +6 -0
  130. package/dist/responses/flags.d.ts.map +1 -0
  131. package/dist/responses/flags.js +23 -0
  132. package/dist/responses/flags.js.map +1 -0
  133. package/dist/responses/history.d.ts +20 -0
  134. package/dist/responses/history.d.ts.map +1 -0
  135. package/dist/responses/history.js +16 -0
  136. package/dist/responses/history.js.map +1 -0
  137. package/dist/responses/locate.d.ts +13 -0
  138. package/dist/responses/locate.d.ts.map +1 -0
  139. package/dist/responses/locate.js +55 -0
  140. package/dist/responses/locate.js.map +1 -0
  141. package/dist/responses/make.d.ts +3 -0
  142. package/dist/responses/make.d.ts.map +1 -0
  143. package/dist/responses/make.js +16 -0
  144. package/dist/responses/make.js.map +1 -0
  145. package/dist/responses/outcome.d.ts +71 -0
  146. package/dist/responses/outcome.d.ts.map +1 -0
  147. package/dist/responses/outcome.js +14 -0
  148. package/dist/responses/outcome.js.map +1 -0
  149. package/dist/responses/page.d.ts +6 -0
  150. package/dist/responses/page.d.ts.map +1 -0
  151. package/dist/responses/page.js +22 -0
  152. package/dist/responses/page.js.map +1 -0
  153. package/dist/responses/publish.d.ts +4 -0
  154. package/dist/responses/publish.d.ts.map +1 -0
  155. package/dist/responses/publish.js +56 -0
  156. package/dist/responses/publish.js.map +1 -0
  157. package/dist/responses/publishIn.d.ts +3 -0
  158. package/dist/responses/publishIn.d.ts.map +1 -0
  159. package/dist/responses/publishIn.js +69 -0
  160. package/dist/responses/publishIn.js.map +1 -0
  161. package/dist/responses/read.d.ts +36 -0
  162. package/dist/responses/read.d.ts.map +1 -0
  163. package/dist/responses/read.js +43 -0
  164. package/dist/responses/read.js.map +1 -0
  165. package/dist/responses/records.d.ts +12 -0
  166. package/dist/responses/records.d.ts.map +1 -0
  167. package/dist/responses/records.js +49 -0
  168. package/dist/responses/records.js.map +1 -0
  169. package/dist/responses/retry.d.ts +34 -0
  170. package/dist/responses/retry.d.ts.map +1 -0
  171. package/dist/responses/retry.js +14 -0
  172. package/dist/responses/retry.js.map +1 -0
  173. package/dist/responses/service.d.ts +142 -0
  174. package/dist/responses/service.d.ts.map +1 -0
  175. package/dist/responses/service.js +95 -0
  176. package/dist/responses/service.js.map +1 -0
  177. package/dist/responses/template.d.ts +7 -0
  178. package/dist/responses/template.d.ts.map +1 -0
  179. package/dist/responses/template.js +58 -0
  180. package/dist/responses/template.js.map +1 -0
  181. package/dist/responses/templateHtml.d.ts +7 -0
  182. package/dist/responses/templateHtml.d.ts.map +1 -0
  183. package/dist/responses/templateHtml.js +18 -0
  184. package/dist/responses/templateHtml.js.map +1 -0
  185. package/dist/responses/templateLinks.d.ts +3 -0
  186. package/dist/responses/templateLinks.d.ts.map +1 -0
  187. package/dist/responses/templateLinks.js +45 -0
  188. package/dist/responses/templateLinks.js.map +1 -0
  189. package/dist/responses/templateNodes.d.ts +17 -0
  190. package/dist/responses/templateNodes.d.ts.map +1 -0
  191. package/dist/responses/templateNodes.js +47 -0
  192. package/dist/responses/templateNodes.js.map +1 -0
  193. package/dist/responses/validateSupersedes.d.ts +5 -0
  194. package/dist/responses/validateSupersedes.d.ts.map +1 -0
  195. package/dist/responses/validateSupersedes.js +21 -0
  196. package/dist/responses/validateSupersedes.js.map +1 -0
  197. package/dist/responses/validatedInput.d.ts +3 -0
  198. package/dist/responses/validatedInput.d.ts.map +1 -0
  199. package/dist/responses/validatedInput.js +43 -0
  200. package/dist/responses/validatedInput.js.map +1 -0
  201. package/dist/responses/waitFor.d.ts +37 -0
  202. package/dist/responses/waitFor.d.ts.map +1 -0
  203. package/dist/responses/waitFor.js +47 -0
  204. package/dist/responses/waitFor.js.map +1 -0
  205. package/dist/rpc/contract.d.ts +125 -2
  206. package/dist/rpc/contract.d.ts.map +1 -1
  207. package/dist/rpc/contract.js +3 -2
  208. package/dist/rpc/contract.js.map +1 -1
  209. package/dist/rpc/responseContract.d.ts +260 -0
  210. package/dist/rpc/responseContract.d.ts.map +1 -0
  211. package/dist/rpc/responseContract.js +37 -0
  212. package/dist/rpc/responseContract.js.map +1 -0
  213. package/dist/rpc/server.d.ts +3 -1
  214. package/dist/rpc/server.d.ts.map +1 -1
  215. package/dist/rpc/server.js +6 -1
  216. package/dist/rpc/server.js.map +1 -1
  217. package/dist/serve-cli.d.ts +3 -0
  218. package/dist/serve-cli.d.ts.map +1 -0
  219. package/dist/serve-cli.js +20 -0
  220. package/dist/serve-cli.js.map +1 -0
  221. package/package.json +3 -3
  222. package/src/board.ts +16 -2
  223. package/src/browser/client.ts +30 -4
  224. package/src/browser/entry.ts +9 -0
  225. package/src/browser/responses/Prompt.ts +6 -0
  226. package/src/browser/responses/answerBody.ts +11 -0
  227. package/src/browser/responses/draftSession.ts +101 -0
  228. package/src/browser/responses/drafts.ts +82 -0
  229. package/src/browser/responses/preview.ts +7 -0
  230. package/src/browser/responses/questionnaireControls.ts +74 -0
  231. package/src/browser/responses/schema.ts +63 -0
  232. package/src/browser/responses/setup.ts +132 -0
  233. package/src/browser/responses/submissionFields.ts +15 -0
  234. package/src/browser/responses/submit.ts +33 -0
  235. package/src/cli.ts +14 -22
  236. package/src/files/changes.ts +2 -1
  237. package/src/http/respond.ts +2 -0
  238. package/src/metadata/backlinks.ts +5 -0
  239. package/src/metadata/problems.ts +3 -0
  240. package/src/metadata/schema.ts +6 -2
  241. package/src/page/attentionDetails.ts +2 -1
  242. package/src/page/metadataDetails.ts +6 -0
  243. package/src/page/navigationScript.ts +1 -1
  244. package/src/page/shell.ts +1 -1
  245. package/src/page/style.ts +3 -1
  246. package/src/page/swap.ts +3 -0
  247. package/src/path/Identity.ts +3 -0
  248. package/src/render/markdown.ts +5 -2
  249. package/src/render/questionnaireDocuments.ts +12 -0
  250. package/src/render/visualDocuments.ts +3 -0
  251. package/src/responses/agent-cli.ts +35 -0
  252. package/src/responses/agent.ts +59 -0
  253. package/src/responses/await.ts +21 -0
  254. package/src/responses/composerHtml.ts +28 -0
  255. package/src/responses/flags.ts +22 -0
  256. package/src/responses/history.ts +18 -0
  257. package/src/responses/locate.ts +60 -0
  258. package/src/responses/make.ts +17 -0
  259. package/src/responses/outcome.ts +15 -0
  260. package/src/responses/page.ts +30 -0
  261. package/src/responses/publish.ts +53 -0
  262. package/src/responses/publishIn.ts +64 -0
  263. package/src/responses/read.ts +45 -0
  264. package/src/responses/records.ts +55 -0
  265. package/src/responses/retry.ts +23 -0
  266. package/src/responses/service.ts +117 -0
  267. package/src/responses/template.ts +72 -0
  268. package/src/responses/templateHtml.ts +26 -0
  269. package/src/responses/templateLinks.ts +43 -0
  270. package/src/responses/templateNodes.ts +55 -0
  271. package/src/responses/validateSupersedes.ts +24 -0
  272. package/src/responses/validatedInput.ts +45 -0
  273. package/src/responses/waitFor.ts +58 -0
  274. package/src/rpc/contract.ts +3 -2
  275. package/src/rpc/responseContract.ts +46 -0
  276. package/src/rpc/server.ts +8 -1
  277. package/src/serve-cli.ts +37 -0
package/dist/board.d.ts CHANGED
@@ -5,6 +5,7 @@ import { type MermaidMissing } from "#http/assets.ts";
5
5
  import type { RenderFailed } from "#render/failed.ts";
6
6
  export interface BoardOptions {
7
7
  readonly home?: string | undefined;
8
+ readonly responses?: boolean;
8
9
  readonly root: string;
9
10
  }
10
11
  type BoardError = HomeMissing | MermaidMissing | PlatformError.PlatformError | RenderFailed;
@@ -1 +1 @@
1
- {"version":3,"file":"board.d.ts","sourceRoot":"","sources":["../src/board.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,aAAa,EAAc,MAAM,QAAQ,CAAC;AAClG,OAAO,EAAE,UAAU,EAA8C,MAAM,sBAAsB,CAAC;AAE9F,OAAO,EAAE,KAAK,WAAW,EAAU,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAyB,KAAK,cAAc,EAAuD,MAAM,iBAAiB,CAAC;AAalI,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKtD,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACtB;AA2ED,KAAK,UAAU,GAAG,WAAW,GAAG,cAAc,GAAG,aAAa,CAAC,aAAa,GAAG,YAAY,CAAC;AAC5F,KAAK,aAAa,GAAG,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;AAE1I,eAAO,MAAM,UAAU,GAAI,SAAS,YAAY,KAAG,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,aAAa,CACxC,CAAC"}
1
+ {"version":3,"file":"board.d.ts","sourceRoot":"","sources":["../src/board.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,aAAa,EAAc,MAAM,QAAQ,CAAC;AAClG,OAAO,EAAE,UAAU,EAA8C,MAAM,sBAAsB,CAAC;AAE9F,OAAO,EAAE,KAAK,WAAW,EAAU,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAyB,KAAK,cAAc,EAAuD,MAAM,iBAAiB,CAAC;AAalI,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAOtD,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACtB;AAsFD,KAAK,UAAU,GAAG,WAAW,GAAG,cAAc,GAAG,aAAa,CAAC,aAAa,GAAG,YAAY,CAAC;AAC5F,KAAK,aAAa,GAAG,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;AAE1I,eAAO,MAAM,UAAU,GAAI,SAAS,YAAY,KAAG,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,aAAa,CACxC,CAAC"}
package/dist/board.js CHANGED
@@ -16,6 +16,8 @@ import { search } from "#http/search.ts";
16
16
  import { start } from "#http/start.ts";
17
17
  import { work } from "#http/work.ts";
18
18
  import { Highlighter } from "#render/highlighter.ts";
19
+ import { responsePage } from "#responses/page.ts";
20
+ import { responseService } from "#responses/service.ts";
19
21
  import { server } from "#rpc/server.ts";
20
22
  import { searchSnapshot } from "#search/snapshot.ts";
21
23
  const routes = (options) => HttpRouter.use((router) => Effect.gen(function* () {
@@ -42,6 +44,14 @@ const routes = (options) => HttpRouter.use((router) => Effect.gen(function* () {
42
44
  }
43
45
  yield* serve(MERMAID_ROUTE, mermaidFile(mermaid));
44
46
  yield* serve(NATIVE_ROUTE, nativeAsset);
47
+ const responses = yield* responseService({
48
+ changes,
49
+ enabled: options.responses === true,
50
+ index: Effect.provideContext(index, context),
51
+ root: options.root,
52
+ });
53
+ const replyPage = responsePage(responses, changes, home, options.responses === true);
54
+ yield* serve("/_board/respond", replyPage);
45
55
  const pages = page({ home, root: options.root }, changes, index);
46
56
  const items = identity(index, pages, changes, home);
47
57
  yield* serve("/_board/item/*", items);
@@ -50,6 +60,9 @@ const routes = (options) => HttpRouter.use((router) => Effect.gen(function* () {
50
60
  const pathname = new URL(url, "http://127.0.0.1").pathname;
51
61
  let selected;
52
62
  switch (pathname) {
63
+ case "/_board/respond":
64
+ selected = replyPage(request);
65
+ break;
53
66
  case "/_board/start":
54
67
  selected = startPage();
55
68
  break;
@@ -67,8 +80,8 @@ const routes = (options) => HttpRouter.use((router) => Effect.gen(function* () {
67
80
  }
68
81
  return Effect.provideContext(selected, context);
69
82
  }
70
- const rpc = yield* server({ changes, home, index: Effect.provideContext(index, context), page: readPage });
71
- yield* serve("/_board/rpc", (request) => sameOrigin(request)
83
+ const rpc = yield* server({ changes, home, index: Effect.provideContext(index, context), page: readPage, responses });
84
+ yield* serve("/_board/rpc", (request) => sameOrigin(request) && (options.responses !== true || request.headers["content-type"]?.split(";")[0] === "application/ndjson")
72
85
  ? rpc.pipe(Effect.provideService(HttpServerRequest.HttpServerRequest, request))
73
86
  : Effect.succeed(respond("Local same-origin requests only", "text/plain", 403)), "POST");
74
87
  yield* serve("/", pages);
package/dist/board.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"board.js","sourceRoot":"","sources":["../src/board.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"board.js","sourceRoot":"","sources":["../src/board.ts"],"names":[],"mappings":"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"}
@@ -2,87 +2,27 @@ import { Effect } from "effect";
2
2
  import type * as AsyncResult from "effect/unstable/reactivity/AsyncResult";
3
3
  import type * as Atom from "effect/unstable/reactivity/Atom";
4
4
  import * as AtomRegistry from "effect/unstable/reactivity/AtomRegistry";
5
+ import type * as Reactivity from "effect/unstable/reactivity/Reactivity";
6
+ import type { RpcClientError } from "effect/unstable/rpc/RpcClientError";
7
+ import { type Bound } from "@shivaedev/effect-contract/bind.ts";
8
+ import type { Contract } from "@shivaedev/effect-contract/contract.ts";
9
+ import { live } from "@shivaedev/effect-contract/live.ts";
5
10
  import { type ResumeOptions } from "@shivaedev/effect-contract/resume.ts";
11
+ import { type ReadFailed, workContract } from "#rpc/contract.ts";
12
+ import { responseContract } from "#rpc/responseContract.ts";
6
13
  export interface Reader {
7
14
  readonly reader: unique symbol;
8
15
  }
9
- export declare function browserClient(url: string, options?: ResumeOptions): {
10
- api: import("@shivaedev/effect-contract/bind.ts").Bound<"work-board", readonly [import("@shivaedev/effect-contract/operation.ts").Query<"page", import("effect/Schema").Struct<{
11
- url: import("effect/Schema").String;
12
- }>, import("effect/Schema").Struct<{
13
- readonly html: import("effect/Schema").String;
14
- readonly status: import("effect/Schema").Number;
15
- }>, {
16
- readonly ReadFailed: typeof import("#rpc/contract.ts").ReadFailed;
17
- }>, import("@shivaedev/effect-contract/operation.ts").Query<"navigation", import("effect/Schema").Void, import("effect/Schema").String, {
18
- readonly ReadFailed: typeof import("#rpc/contract.ts").ReadFailed;
19
- }>, import("@shivaedev/effect-contract/operation.ts").Query<"search", import("effect/Schema").Struct<{
20
- query: import("effect/Schema").String;
21
- }>, import("effect/Schema").Struct<{
22
- readonly results: import("effect/Schema").$Array<import("effect/Schema").Struct<{
23
- readonly file: import("effect/Schema").String;
24
- readonly href: import("effect/Schema").String;
25
- readonly kind: import("effect/Schema").Literals<readonly ["document", "heading", "passage"]>;
26
- readonly line: import("effect/Schema").optional<import("effect/Schema").Number>;
27
- readonly snippet: import("effect/Schema").String;
28
- readonly text: import("effect/Schema").String;
29
- readonly title: import("effect/Schema").String;
30
- }>>;
31
- readonly total: import("effect/Schema").Number;
32
- readonly unavailable: import("effect/Schema").$Array<import("effect/Schema").String>;
33
- }>, {
34
- readonly ReadFailed: typeof import("#rpc/contract.ts").ReadFailed;
35
- }>, import("@shivaedev/effect-contract/operation.ts").Query<"history", import("effect/Schema").Struct<{
36
- readonly action: import("effect/Schema").Literals<readonly ["check", "compare", "observe"]>;
37
- readonly baseline: import("effect/Schema").NullOr<import("effect/Schema").String>;
38
- }>, import("effect/Schema").Struct<{
39
- readonly discardBaseline: import("effect/Schema").Boolean;
40
- readonly html: import("effect/Schema").String;
41
- readonly reason: import("effect/Schema").String;
42
- readonly snapshot: import("effect/Schema").NullOr<import("effect/Schema").String>;
43
- }>, {
44
- readonly ReadFailed: typeof import("#rpc/contract.ts").ReadFailed;
45
- }>, import("@shivaedev/effect-contract/operation.ts").Query<"watcher", import("effect/Schema").Void, import("effect/Schema").Struct<{
46
- readonly watching: import("effect/Schema").Boolean;
47
- }>, {
48
- readonly ReadFailed: typeof import("#rpc/contract.ts").ReadFailed;
49
- }>], readonly [], import("effect/unstable/rpc/Rpc").Rpc<"work-board.history", import("effect/Schema").Struct<{
50
- readonly action: import("effect/Schema").Literals<readonly ["check", "compare", "observe"]>;
51
- readonly baseline: import("effect/Schema").NullOr<import("effect/Schema").String>;
52
- }>, import("effect/Schema").Struct<{
53
- readonly discardBaseline: import("effect/Schema").Boolean;
54
- readonly html: import("effect/Schema").String;
55
- readonly reason: import("effect/Schema").String;
56
- readonly snapshot: import("effect/Schema").NullOr<import("effect/Schema").String>;
57
- }>, import("effect/Schema").Union<readonly typeof import("#rpc/contract.ts").ReadFailed[]>, never, never> | import("effect/unstable/rpc/Rpc").Rpc<"work-board.navigation", import("effect/Schema").Void, import("effect/Schema").String, import("effect/Schema").Union<readonly typeof import("#rpc/contract.ts").ReadFailed[]>, never, never> | import("effect/unstable/rpc/Rpc").Rpc<"work-board.page", import("effect/Schema").Struct<{
58
- url: import("effect/Schema").String;
59
- }>, import("effect/Schema").Struct<{
60
- readonly html: import("effect/Schema").String;
61
- readonly status: import("effect/Schema").Number;
62
- }>, import("effect/Schema").Union<readonly typeof import("#rpc/contract.ts").ReadFailed[]>, never, never> | import("effect/unstable/rpc/Rpc").Rpc<"work-board.search", import("effect/Schema").Struct<{
63
- query: import("effect/Schema").String;
64
- }>, import("effect/Schema").Struct<{
65
- readonly results: import("effect/Schema").$Array<import("effect/Schema").Struct<{
66
- readonly file: import("effect/Schema").String;
67
- readonly href: import("effect/Schema").String;
68
- readonly kind: import("effect/Schema").Literals<readonly ["document", "heading", "passage"]>;
69
- readonly line: import("effect/Schema").optional<import("effect/Schema").Number>;
70
- readonly snippet: import("effect/Schema").String;
71
- readonly text: import("effect/Schema").String;
72
- readonly title: import("effect/Schema").String;
73
- }>>;
74
- readonly total: import("effect/Schema").Number;
75
- readonly unavailable: import("effect/Schema").$Array<import("effect/Schema").String>;
76
- }>, import("effect/Schema").Union<readonly typeof import("#rpc/contract.ts").ReadFailed[]>, never, never> | import("effect/unstable/rpc/Rpc").Rpc<"work-board.watcher", import("effect/Schema").Void, import("effect/Schema").Struct<{
77
- readonly watching: import("effect/Schema").Boolean;
78
- }>, import("effect/Schema").Union<readonly typeof import("#rpc/contract.ts").ReadFailed[]>, never, never>, Reader>;
79
- read: <A, E>(atom: Atom.Atom<AsyncResult.AsyncResult<A, E>>, signal?: AbortSignal) => Promise<A>;
80
- registry: AtomRegistry.AtomRegistry;
81
- run: <A, E>(effect: Effect.Effect<A, E, Reader>, signal?: AbortSignal) => Promise<A>;
82
- updates: {
83
- connection: Atom.Atom<AsyncResult.AsyncResult<void, never>>;
84
- paused: Atom.Writable<boolean, boolean>;
85
- status: Atom.Writable<import("@shivaedev/effect-contract/live.ts").LiveStatus<import("#rpc/contract.ts").ReadFailed | import("effect/unstable/rpc/RpcClientError").RpcClientError>, import("@shivaedev/effect-contract/live.ts").LiveStatus<import("#rpc/contract.ts").ReadFailed | import("effect/unstable/rpc/RpcClientError").RpcClientError>>;
86
- };
87
- };
16
+ type BoundContract<TContract> = TContract extends Contract<infer TName, infer TQueries, infer TCommands, infer TRpcs> ? Bound<TName, TQueries, TCommands, TRpcs, Reader> : never;
17
+ export interface BrowserClient {
18
+ readonly api: BoundContract<typeof workContract>;
19
+ readonly mutate: <A, E>(effect: Effect.Effect<A, E, Reader | Reactivity.Reactivity>, signal?: AbortSignal) => Promise<A>;
20
+ readonly read: <A, E>(atom: Atom.Atom<AsyncResult.AsyncResult<A, E>>, signal?: AbortSignal) => Promise<A>;
21
+ readonly registry: AtomRegistry.AtomRegistry;
22
+ readonly responses: BoundContract<typeof responseContract>;
23
+ readonly run: <A, E>(effect: Effect.Effect<A, E, Reader>, signal?: AbortSignal) => Promise<A>;
24
+ readonly updates: ReturnType<typeof live<Reader, ReadFailed | RpcClientError, never>>;
25
+ }
26
+ export declare function browserClient(url: string, options?: ResumeOptions): BrowserClient;
27
+ export {};
88
28
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/browser/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAiB,MAAM,QAAQ,CAAC;AAE/C,OAAO,KAAK,KAAK,WAAW,MAAM,wCAAwC,CAAC;AAC3E,OAAO,KAAK,KAAK,IAAI,MAAM,iCAAiC,CAAC;AAC7D,OAAO,KAAK,YAAY,MAAM,yCAAyC,CAAC;AAKxE,OAAO,EAAE,KAAK,aAAa,EAAgB,MAAM,sCAAsC,CAAC;AAIxF,MAAM,WAAW,MAAM;IACtB,QAAQ,CAAC,MAAM,EAAE,OAAO,MAAM,CAAC;CAC/B;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAajD,CAAC,EAAE,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,WAAW;;UAY3E,CAAC,EAAE,CAAC,UAAU,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,WAAW,WAAW;;;;;;EAgBlF"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/browser/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAiB,MAAM,QAAQ,CAAC;AAE/C,OAAO,KAAK,KAAK,WAAW,MAAM,wCAAwC,CAAC;AAC3E,OAAO,KAAK,KAAK,IAAI,MAAM,iCAAiC,CAAC;AAC7D,OAAO,KAAK,YAAY,MAAM,yCAAyC,CAAC;AAExE,OAAO,KAAK,KAAK,UAAU,MAAM,uCAAuC,CAAC;AAEzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,KAAK,KAAK,EAAQ,MAAM,oCAAoC,CAAC;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AACvE,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,EAAE,KAAK,aAAa,EAAgB,MAAM,sCAAsC,CAAC;AACxF,OAAO,EAAE,KAAK,UAAU,EAAE,YAAY,EAAY,MAAM,kBAAkB,CAAC;AAE3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,MAAM,WAAW,MAAM;IACtB,QAAQ,CAAC,MAAM,EAAE,OAAO,MAAM,CAAC;CAC/B;AAED,KAAK,aAAa,CAAC,SAAS,IAC3B,SAAS,SAAS,QAAQ,CAAC,MAAM,KAAK,EAAE,MAAM,QAAQ,EAAE,MAAM,SAAS,EAAE,MAAM,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;AAClJ,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC,OAAO,YAAY,CAAC,CAAC;IACjD,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IACzH,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAC1G,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,YAAY,CAAC;IAC7C,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,OAAO,gBAAgB,CAAC,CAAC;IAC3D,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9F,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;CACtF;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,aAAa,CAmDrF"}
@@ -8,6 +8,7 @@ import { live } from "@shivaedev/effect-contract/live.ts";
8
8
  import { resumeSignal } from "@shivaedev/effect-contract/resume.ts";
9
9
  import { workContract, workRpcs } from "#rpc/contract.ts";
10
10
  import { workspace } from "#rpc/keys.ts";
11
+ import { responseContract } from "#rpc/responseContract.ts";
11
12
  export function browserClient(url, options = {}) {
12
13
  class Client extends AtomRpc.Service()("WorkBoard/Reader", {
13
14
  group: workRpcs,
@@ -48,6 +49,16 @@ export function browserClient(url, options = {}) {
48
49
  throw error;
49
50
  }
50
51
  }
51
- return { api, read, registry, run, updates };
52
+ async function mutate(effect, signal) {
53
+ const result = await Effect.runPromise(Effect.result(AtomRegistry.getResult(registry, Client.runtime.atom(effect), { suspendOnWaiting: true })), {
54
+ signal,
55
+ });
56
+ if (result._tag === "Failure") {
57
+ throw result.failure;
58
+ }
59
+ return result.success;
60
+ }
61
+ const responses = bind(responseContract, Client);
62
+ return { api, mutate, read, registry, responses, run, updates };
52
63
  }
53
64
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/browser/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/browser/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { session as ownedSession } from "./session.ts";
2
+ export declare const session: typeof ownedSession;
3
+ //# sourceMappingURL=entry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../../src/browser/entry.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,cAAc,CAAC;AAEvD,eAAO,MAAM,OAAO,qBAAe,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { setupResponses } from "#browser/responses/setup.ts";
2
+ if (typeof window !== "undefined" && typeof document !== "undefined") {
3
+ setupResponses();
4
+ }
5
+ import { session as ownedSession } from "./session.js";
6
+ export const session = ownedSession;
7
+ //# sourceMappingURL=entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry.js","sourceRoot":"","sources":["../../src/browser/entry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;IACtE,cAAc,EAAE,CAAC;AAClB,CAAC;AAED,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,cAAc,CAAC;AAEvD,MAAM,CAAC,MAAM,OAAO,GAAG,YAAY,CAAC"}
@@ -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"}
@@ -0,0 +1,8 @@
1
+ import { type Draft } from "./drafts.ts";
2
+ export declare function draftSession(key: string, revision: string, storage: Storage | undefined, storageKey: string, report: (message: string) => void): {
3
+ clear: () => void;
4
+ current: () => Draft;
5
+ saved: (pending: Draft) => boolean;
6
+ update: (patch: Partial<Draft>) => Draft;
7
+ };
8
+ //# sourceMappingURL=draftSession.d.ts.map
@@ -0,0 +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;;;qBAkEtH,KAAK;oBA5BN,OAAO,CAAC,KAAK,CAAC;EA0DrC"}
@@ -0,0 +1,105 @@
1
+ import { Clock, Effect } from "effect";
2
+ import { DRAFT_AGE, encodeDrafts, readDrafts } from "./drafts.js";
3
+ const states = new Map();
4
+ export function draftSession(key, revision, storage, storageKey, report) {
5
+ const stateKey = `${JSON.stringify(storageKey)}:${key}`;
6
+ function local() {
7
+ if (!storage) {
8
+ throw new Error("Draft storage unavailable");
9
+ }
10
+ return storage;
11
+ }
12
+ let blocked = false;
13
+ let drafts = {};
14
+ try {
15
+ const stored = readDrafts(local().getItem(storageKey), Effect.runSync(Clock.currentTimeMillis));
16
+ drafts = stored.drafts;
17
+ if (stored.expired) {
18
+ report("Expired drafts were cleared after 30 days. Saved responses are unaffected.");
19
+ }
20
+ local().setItem(storageKey, encodeDrafts(drafts));
21
+ }
22
+ catch {
23
+ blocked = true;
24
+ report("Draft history is unavailable or malformed. Keep a copy; edits remain in this window.");
25
+ }
26
+ const memory = states.get(stateKey);
27
+ if (memory && Effect.runSync(Clock.currentTimeMillis) - memory.updatedAt >= DRAFT_AGE) {
28
+ states.delete(stateKey);
29
+ report("A window draft expired after 30 days. Saved responses are unaffected.");
30
+ }
31
+ let current = states.get(stateKey)
32
+ ?? drafts[key] ?? {
33
+ author: "",
34
+ body: "",
35
+ id: `response.${crypto.randomUUID()}`,
36
+ revision,
37
+ type: "answer",
38
+ updatedAt: Effect.runSync(Clock.currentTimeMillis),
39
+ };
40
+ if (current.revision !== revision) {
41
+ report("Source changed since this draft. Your text is retained; review the new source and preview to bind it to this revision.");
42
+ }
43
+ function update(patch) {
44
+ current = { ...(states.get(stateKey) ?? current), ...patch, updatedAt: Effect.runSync(Clock.currentTimeMillis) };
45
+ states.set(stateKey, current);
46
+ try {
47
+ if (blocked) {
48
+ throw new Error("Unknown draft history");
49
+ }
50
+ const latest = readDrafts(local().getItem(storageKey), Effect.runSync(Clock.currentTimeMillis)).drafts;
51
+ local().setItem(storageKey, encodeDrafts({ ...latest, [key]: current }));
52
+ }
53
+ catch {
54
+ report("Draft could not be persisted (storage full or unavailable). Keep a copy; your text remains in this window.");
55
+ }
56
+ return current;
57
+ }
58
+ function clear() {
59
+ try {
60
+ local().removeItem(storageKey);
61
+ blocked = false;
62
+ for (const storedKey of states.keys()) {
63
+ if (storedKey.startsWith(`${JSON.stringify(storageKey)}:`)) {
64
+ states.delete(storedKey);
65
+ }
66
+ }
67
+ report("Workspace drafts cleared. Saved responses are unchanged; this visible text remains until you navigate away.");
68
+ }
69
+ catch {
70
+ report("Draft storage could not be cleared.");
71
+ }
72
+ }
73
+ function saved(pending) {
74
+ if (states.get(stateKey) !== pending) {
75
+ const live = states.get(stateKey);
76
+ if (live?.id === pending.id) {
77
+ update({ id: `response.${crypto.randomUUID()}` });
78
+ }
79
+ return false;
80
+ }
81
+ states.delete(stateKey);
82
+ try {
83
+ const latest = readDrafts(local().getItem(storageKey), Effect.runSync(Clock.currentTimeMillis)).drafts;
84
+ if (latest[key]?.id === pending.id) {
85
+ delete latest[key];
86
+ }
87
+ local().setItem(storageKey, encodeDrafts(latest));
88
+ }
89
+ catch {
90
+ report("Saved response confirmed, but its browser draft could not be cleared.");
91
+ }
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
+ };
101
+ return true;
102
+ }
103
+ return { clear, current: () => current, saved, update };
104
+ }
105
+ //# sourceMappingURL=draftSession.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draftSession.js","sourceRoot":"","sources":["../../../src/browser/responses/draftSession.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { type PromptAnswer } from "./schema.ts";
2
+ export declare const DRAFT_BYTES: number;
3
+ export declare const DRAFT_AGE: number;
4
+ export interface Draft {
5
+ readonly answers?: readonly PromptAnswer[] | undefined;
6
+ readonly author: string;
7
+ readonly body: string;
8
+ readonly id: string;
9
+ readonly question?: string | undefined;
10
+ readonly recovery?: string | undefined;
11
+ readonly revision: string;
12
+ readonly supersedes?: string | undefined;
13
+ readonly type: string;
14
+ readonly updatedAt: number;
15
+ }
16
+ export declare function readDrafts(raw: string | null, now: number): {
17
+ drafts: Record<string, Draft>;
18
+ expired: boolean;
19
+ };
20
+ export declare function encodeDrafts(drafts: Readonly<Record<string, Draft>>): string;
21
+ //# sourceMappingURL=drafts.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,68 @@
1
+ import { Schema } from "effect";
2
+ import { Identity } from "#path/Identity.ts";
3
+ import { Answers } from "./schema.js";
4
+ export const DRAFT_BYTES = 2 * 1024 * 1024;
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
+ }
14
+ export function readDrafts(raw, now) {
15
+ if (raw === null) {
16
+ return { drafts: {}, expired: false };
17
+ }
18
+ if (new TextEncoder().encode(raw).length > DRAFT_BYTES) {
19
+ throw new Error("Draft storage exceeds the workspace limit.");
20
+ }
21
+ const value = JSON.parse(raw);
22
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
23
+ throw new Error("Draft storage is malformed.");
24
+ }
25
+ const drafts = {};
26
+ let expired = false;
27
+ for (const [key, entry] of Object.entries(value)) {
28
+ if (typeof entry !== "object"
29
+ || entry === null
30
+ || !("author" in entry)
31
+ || !("body" in entry)
32
+ || !("id" in entry)
33
+ || !("revision" in entry)
34
+ || !("type" in entry)
35
+ || !("updatedAt" in entry)
36
+ || typeof entry.author !== "string"
37
+ || typeof entry.body !== "string"
38
+ || typeof entry.id !== "string"
39
+ || typeof entry.revision !== "string"
40
+ || (entry.type !== "answer" && entry.type !== "clarify" && entry.type !== "not_now")
41
+ || typeof entry.updatedAt !== "number"
42
+ || !Number.isFinite(entry.updatedAt)) {
43
+ throw new Error("Draft storage is malformed.");
44
+ }
45
+ if (entry.updatedAt > now || now - entry.updatedAt >= DRAFT_AGE) {
46
+ expired = true;
47
+ continue;
48
+ }
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
+ };
58
+ }
59
+ return { drafts, expired };
60
+ }
61
+ export function encodeDrafts(drafts) {
62
+ const value = JSON.stringify(drafts);
63
+ if (new TextEncoder().encode(value).length > DRAFT_BYTES) {
64
+ throw new Error("Draft storage is full. Copy this draft before clearing workspace drafts.");
65
+ }
66
+ return value;
67
+ }
68
+ //# sourceMappingURL=drafts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drafts.js","sourceRoot":"","sources":["../../../src/browser/responses/drafts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { Draft } from "./drafts.ts";
2
+ import type { Prompt } from "./Prompt.ts";
3
+ export declare function responsePreview(draft: Draft, question: string, prompts?: readonly Prompt[]): string;
4
+ //# sourceMappingURL=preview.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,5 @@
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}`;
4
+ }
5
+ //# sourceMappingURL=preview.js.map
@@ -0,0 +1 @@
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"}