redraft-local 0.1.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 (237) hide show
  1. package/README.md +143 -0
  2. package/bin/redraft.js +5 -0
  3. package/bin/redraft.mjs +5 -0
  4. package/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  5. package/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  6. package/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  7. package/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  8. package/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  9. package/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  10. package/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  11. package/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  12. package/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  13. package/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  14. package/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  15. package/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  16. package/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  17. package/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  18. package/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  19. package/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  20. package/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  21. package/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  22. package/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  23. package/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  24. package/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  25. package/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  26. package/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  27. package/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  28. package/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  29. package/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  30. package/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  31. package/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  32. package/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  33. package/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  34. package/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  35. package/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  36. package/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  37. package/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  38. package/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  39. package/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  40. package/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  41. package/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  42. package/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  43. package/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  44. package/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  45. package/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  46. package/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  47. package/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  48. package/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  49. package/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  50. package/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  51. package/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  52. package/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  53. package/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  54. package/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  55. package/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  56. package/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  57. package/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  58. package/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  59. package/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  60. package/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  61. package/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  62. package/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  63. package/dist/assets/apl-B4CMkyY2.js +1 -0
  64. package/dist/assets/arc-BgLKgAzo.js +1 -0
  65. package/dist/assets/architectureDiagram-3BPJPVTR-DUjZFSch.js +36 -0
  66. package/dist/assets/asciiarmor-Df11BRmG.js +1 -0
  67. package/dist/assets/asn1-EdZsLKOL.js +1 -0
  68. package/dist/assets/asterisk-B-8jnY81.js +1 -0
  69. package/dist/assets/blockDiagram-GPEHLZMM-B5lXfnYt.js +132 -0
  70. package/dist/assets/brainfuck-C4LP7Hcl.js +1 -0
  71. package/dist/assets/c4Diagram-AAUBKEIU-BvClm0qm.js +10 -0
  72. package/dist/assets/channel-7EQqZR3B.js +1 -0
  73. package/dist/assets/chunk-2J33WTMH-CEHXzvmq.js +1 -0
  74. package/dist/assets/chunk-4BX2VUAB-DSC0P7-r.js +1 -0
  75. package/dist/assets/chunk-55IACEB6--6omHD3y.js +1 -0
  76. package/dist/assets/chunk-727SXJPM-_oYajenN.js +206 -0
  77. package/dist/assets/chunk-AQP2D5EJ-CtBEk7Wt.js +231 -0
  78. package/dist/assets/chunk-FMBD7UC4-CUG06_Py.js +15 -0
  79. package/dist/assets/chunk-ND2GUHAM-ByZ-QCVp.js +1 -0
  80. package/dist/assets/chunk-QZHKN3VN-DyKKbGn5.js +1 -0
  81. package/dist/assets/classDiagram-4FO5ZUOK-E-KsPQ0n.js +1 -0
  82. package/dist/assets/classDiagram-v2-Q7XG4LA2-E-KsPQ0n.js +1 -0
  83. package/dist/assets/clike-B9uivgTg.js +1 -0
  84. package/dist/assets/clojure-BMjYHr_A.js +1 -0
  85. package/dist/assets/cmake-BQqOBYOt.js +1 -0
  86. package/dist/assets/cobol-CWcv1MsR.js +1 -0
  87. package/dist/assets/coffeescript-S37ZYGWr.js +1 -0
  88. package/dist/assets/commonlisp-DBKNyK5s.js +1 -0
  89. package/dist/assets/cose-bilkent-S5V4N54A-DO1d36Xa.js +1 -0
  90. package/dist/assets/crystal-SjHAIU92.js +1 -0
  91. package/dist/assets/css-BnMrqG3P.js +1 -0
  92. package/dist/assets/cypher-C_CwsFkJ.js +1 -0
  93. package/dist/assets/cytoscape.esm-D3_iZ_3b.js +321 -0
  94. package/dist/assets/d-pRatUO7H.js +1 -0
  95. package/dist/assets/dagre-BM42HDAG-CtijaGW4.js +4 -0
  96. package/dist/assets/defaultLocale-DX6XiGOO.js +1 -0
  97. package/dist/assets/diagram-2AECGRRQ-CLuIxwuH.js +43 -0
  98. package/dist/assets/diagram-5GNKFQAL-C1SsZ_SX.js +10 -0
  99. package/dist/assets/diagram-KO2AKTUF-0Q55p83r.js +3 -0
  100. package/dist/assets/diagram-LMA3HP47-Cxe6Lxmi.js +24 -0
  101. package/dist/assets/diagram-OG6HWLK6-DdRxQD4N.js +24 -0
  102. package/dist/assets/diff-DbItnlRl.js +1 -0
  103. package/dist/assets/dockerfile-BKs6k2Af.js +1 -0
  104. package/dist/assets/dtd-DF_7sFjM.js +1 -0
  105. package/dist/assets/dylan-DwRh75JA.js +1 -0
  106. package/dist/assets/ebnf-CDyGwa7X.js +1 -0
  107. package/dist/assets/ecl-Cabwm37j.js +1 -0
  108. package/dist/assets/eiffel-CnydiIhH.js +1 -0
  109. package/dist/assets/elm-vLlmbW-K.js +1 -0
  110. package/dist/assets/erDiagram-TEJ5UH35-Br4OpnN3.js +85 -0
  111. package/dist/assets/erlang-BNw1qcRV.js +1 -0
  112. package/dist/assets/factor-kuTfRLto.js +1 -0
  113. package/dist/assets/fcl-Kvtd6kyn.js +1 -0
  114. package/dist/assets/flowDiagram-I6XJVG4X-BiWm4cMT.js +162 -0
  115. package/dist/assets/forth-Ffai-XNe.js +1 -0
  116. package/dist/assets/fortran-DYz_wnZ1.js +1 -0
  117. package/dist/assets/ganttDiagram-6RSMTGT7-Brtf61gk.js +292 -0
  118. package/dist/assets/gas-Bneqetm1.js +1 -0
  119. package/dist/assets/gherkin-heZmZLOM.js +1 -0
  120. package/dist/assets/gitGraphDiagram-PVQCEYII-B_3TyVGw.js +106 -0
  121. package/dist/assets/graph-DtBDQa9e.js +1 -0
  122. package/dist/assets/groovy-D9Dt4D0W.js +1 -0
  123. package/dist/assets/haskell-Cw1EW3IL.js +1 -0
  124. package/dist/assets/haxe-H-WmDvRZ.js +1 -0
  125. package/dist/assets/http-DBlCnlav.js +1 -0
  126. package/dist/assets/idl-BEugSyMb.js +1 -0
  127. package/dist/assets/index-2ky3dpil.js +1 -0
  128. package/dist/assets/index-4KK6bEqw.js +1 -0
  129. package/dist/assets/index-5ZUGo5ij.js +1 -0
  130. package/dist/assets/index-7FKqtxp0.js +13 -0
  131. package/dist/assets/index-B-96Htfw.js +6 -0
  132. package/dist/assets/index-BADfuR--.js +1 -0
  133. package/dist/assets/index-BD8MFdSo.js +1 -0
  134. package/dist/assets/index-BR9BrISk.js +1 -0
  135. package/dist/assets/index-BfnTu5JW.js +1 -0
  136. package/dist/assets/index-BgooUBR3.js +1 -0
  137. package/dist/assets/index-BkakCAI-.js +1 -0
  138. package/dist/assets/index-CBjB7xM7.js +1 -0
  139. package/dist/assets/index-CZY06TRX.js +1381 -0
  140. package/dist/assets/index-CiPTn2KW.js +2 -0
  141. package/dist/assets/index-CymWWySw.js +1 -0
  142. package/dist/assets/index-DKi-lLAL.js +1 -0
  143. package/dist/assets/index-Da6DydBE.js +1 -0
  144. package/dist/assets/index-Df2jy_bv.js +7 -0
  145. package/dist/assets/index-Ds7udwcB.js +3 -0
  146. package/dist/assets/index-MfTARqwV.css +1 -0
  147. package/dist/assets/index-OT6ZQvoz.js +1 -0
  148. package/dist/assets/index-Ot1nLBuC.js +1 -0
  149. package/dist/assets/index-PN8t7sGq.js +1 -0
  150. package/dist/assets/index-qn0Rsj7y.js +1 -0
  151. package/dist/assets/infoDiagram-5YYISTIA-DXpolhhW.js +2 -0
  152. package/dist/assets/init-Gi6I4Gst.js +1 -0
  153. package/dist/assets/ishikawaDiagram-YF4QCWOH-CaMQv6HD.js +70 -0
  154. package/dist/assets/javascript-iXu5QeM3.js +1 -0
  155. package/dist/assets/journeyDiagram-JHISSGLW-grFPpRCE.js +139 -0
  156. package/dist/assets/julia-DuME0IfC.js +1 -0
  157. package/dist/assets/kanban-definition-UN3LZRKU-BXTf-nUc.js +89 -0
  158. package/dist/assets/katex-HP8lGamR.js +257 -0
  159. package/dist/assets/layout-BfOOH1Wh.js +1 -0
  160. package/dist/assets/linear-DzLvWW3N.js +1 -0
  161. package/dist/assets/livescript-BwQOo05w.js +1 -0
  162. package/dist/assets/lua-VAEuO923.js +1 -0
  163. package/dist/assets/mathematica-DTrFuWx2.js +1 -0
  164. package/dist/assets/mbox-CNhZ1qSd.js +1 -0
  165. package/dist/assets/mindmap-definition-RKZ34NQL-DnhBS8H1.js +96 -0
  166. package/dist/assets/mirc-CjQqDB4T.js +1 -0
  167. package/dist/assets/mllike-CXdrOF99.js +1 -0
  168. package/dist/assets/modelica-Dc1JOy9r.js +1 -0
  169. package/dist/assets/mscgen-BA5vi2Kp.js +1 -0
  170. package/dist/assets/mumps-BT43cFF4.js +1 -0
  171. package/dist/assets/nginx-DdIZxoE0.js +1 -0
  172. package/dist/assets/nsis-LdVXkNf5.js +1 -0
  173. package/dist/assets/ntriples-BfvgReVJ.js +1 -0
  174. package/dist/assets/octave-Ck1zUtKM.js +1 -0
  175. package/dist/assets/ordinal-Cboi1Yqb.js +1 -0
  176. package/dist/assets/oz-BzwKVEFT.js +1 -0
  177. package/dist/assets/pascal--L3eBynH.js +1 -0
  178. package/dist/assets/perl-CdXCOZ3F.js +1 -0
  179. package/dist/assets/pieDiagram-4H26LBE5-DjWB8MBQ.js +30 -0
  180. package/dist/assets/pig-CevX1Tat.js +1 -0
  181. package/dist/assets/powershell-CFHJl5sT.js +1 -0
  182. package/dist/assets/properties-C78fOPTZ.js +1 -0
  183. package/dist/assets/protobuf-ChK-085T.js +1 -0
  184. package/dist/assets/pug-DeIclll2.js +1 -0
  185. package/dist/assets/puppet-DMA9R1ak.js +1 -0
  186. package/dist/assets/python-BuPzkPfP.js +1 -0
  187. package/dist/assets/q-pXgVlZs6.js +1 -0
  188. package/dist/assets/quadrantDiagram-W4KKPZXB-AbXkFaom.js +7 -0
  189. package/dist/assets/r-B6wPVr8A.js +1 -0
  190. package/dist/assets/requirementDiagram-4Y6WPE33-Dmvesc_X.js +84 -0
  191. package/dist/assets/rpm-CTu-6PCP.js +1 -0
  192. package/dist/assets/ruby-B2Rjki9n.js +1 -0
  193. package/dist/assets/sankeyDiagram-5OEKKPKP-CTvY1DJo.js +40 -0
  194. package/dist/assets/sas-B4kiWyti.js +1 -0
  195. package/dist/assets/scheme-C41bIUwD.js +1 -0
  196. package/dist/assets/sequenceDiagram-3UESZ5HK-ejgTSjfJ.js +162 -0
  197. package/dist/assets/shell-CjFT_Tl9.js +1 -0
  198. package/dist/assets/sieve-C3Gn_uJK.js +1 -0
  199. package/dist/assets/simple-mode-GW_nhZxv.js +1 -0
  200. package/dist/assets/smalltalk-CnHTOXQT.js +1 -0
  201. package/dist/assets/solr-DehyRSwq.js +1 -0
  202. package/dist/assets/sparql-DkYu6x3z.js +1 -0
  203. package/dist/assets/spreadsheet-BCZA_wO0.js +1 -0
  204. package/dist/assets/sql-D0XecflT.js +1 -0
  205. package/dist/assets/stateDiagram-AJRCARHV-Drx8IQcv.js +1 -0
  206. package/dist/assets/stateDiagram-v2-BHNVJYJU-BWYCpSzu.js +1 -0
  207. package/dist/assets/stex-C3f8Ysf7.js +1 -0
  208. package/dist/assets/stylus-B533Al4x.js +1 -0
  209. package/dist/assets/swift-BzpIVaGY.js +1 -0
  210. package/dist/assets/tcl-DVfN8rqt.js +1 -0
  211. package/dist/assets/textile-CnDTJFAw.js +1 -0
  212. package/dist/assets/tiddlywiki-DO-Gjzrf.js +1 -0
  213. package/dist/assets/tiki-DGYXhP31.js +1 -0
  214. package/dist/assets/timeline-definition-PNZ67QCA-DXznZ8i_.js +120 -0
  215. package/dist/assets/toml-Bm5Em-hy.js +1 -0
  216. package/dist/assets/troff-wAsdV37c.js +1 -0
  217. package/dist/assets/ttcn-CfJYG6tj.js +1 -0
  218. package/dist/assets/ttcn-cfg-B9xdYoR4.js +1 -0
  219. package/dist/assets/turtle-B1tBg_DP.js +1 -0
  220. package/dist/assets/vb-CmGdzxic.js +1 -0
  221. package/dist/assets/vbscript-BuJXcnF6.js +1 -0
  222. package/dist/assets/velocity-D8B20fx6.js +1 -0
  223. package/dist/assets/vennDiagram-CIIHVFJN-CLIExu7h.js +34 -0
  224. package/dist/assets/verilog-C6RDOZhf.js +1 -0
  225. package/dist/assets/vhdl-lSbBsy5d.js +1 -0
  226. package/dist/assets/wardley-L42UT6IY-CJGVDUi0.js +161 -0
  227. package/dist/assets/wardleyDiagram-YWT4CUSO-DB0Z_Z7a.js +78 -0
  228. package/dist/assets/webidl-ZXfAyPTL.js +1 -0
  229. package/dist/assets/xquery-DzFWVndE.js +1 -0
  230. package/dist/assets/xychartDiagram-2RQKCTM6-CLdNuotp.js +7 -0
  231. package/dist/assets/yacas-BJ4BC0dw.js +1 -0
  232. package/dist/assets/z80-Hz9HOZM7.js +1 -0
  233. package/dist/favicon.png +0 -0
  234. package/dist/index.html +14 -0
  235. package/dist/logo.png +0 -0
  236. package/dist-server/cli.mjs +725 -0
  237. package/package.json +79 -0
package/README.md ADDED
@@ -0,0 +1,143 @@
1
+ <img src="public/logo.png" alt="ReDraft" height="48" />
2
+
3
+ # ReDraft
4
+
5
+ ReDraft is a proposal review workspace for markdown documents. It lets teams browse proposals, discuss them with inline comment threads, and edit them in either a rich-text editor or raw markdown — backed by GitHub in remote mode or the local filesystem in local mode.
6
+
7
+ ## What it does
8
+
9
+ - Organizes proposals from a `proposals/` directory
10
+ - Renders markdown documents with comments, activity, and Mermaid diagrams
11
+ - Supports inline comment threads, replies, and resolution
12
+ - Lets different users work in the mode that fits them best
13
+
14
+ | Mode | Best for | Data source | Editing style |
15
+ |---|---|---|---|
16
+ | **Remote WYSIWYG** | Non-technical reviewers | GitHub repository | Rich-text editing in the browser |
17
+ | **Remote Markdown** | Technical contributors | GitHub repository | Raw markdown + preview |
18
+ | **Local + AI** | Power users and AI agents | Local files on disk | Browser UI + direct file edits |
19
+
20
+ ---
21
+
22
+ ## Remote mode — for reviewers and contributors
23
+
24
+ Remote mode is the hosted GitHub-backed experience. You connect ReDraft to a repository that contains proposal files under `proposals/`.
25
+
26
+ ### For non-technical reviewers
27
+
28
+ Use **View** and **WYSIWYG** modes when you want to read, comment, and make light edits without working directly in markdown syntax.
29
+
30
+ Typical workflow:
31
+ 1. Open the hosted ReDraft site.
32
+ 2. Enter a fine-grained GitHub PAT and `owner/repo`.
33
+ 3. Choose a proposal from the tree.
34
+ 4. Read in **View** mode or switch to **WYSIWYG**.
35
+ 5. Select text, add comments, reply to threads, and resolve feedback.
36
+
37
+ ### For technical contributors
38
+
39
+ Use **Raw** mode when you want direct markdown control while still keeping the browser review workflow.
40
+
41
+ Typical workflow:
42
+ 1. Connect to the target repository.
43
+ 2. Open a proposal from the tree.
44
+ 3. Switch between **View**, **WYSIWYG**, and **Raw** as needed.
45
+ 4. Edit markdown directly in **Raw** mode.
46
+ 5. Save changes back to GitHub with SHA-based conflict protection.
47
+
48
+ ### Remote mode requirements
49
+
50
+ ReDraft expects a fine-grained GitHub PAT with:
51
+ - **Contents: Read/Write**
52
+ - **Metadata: Read**
53
+
54
+ Repository conventions:
55
+ - Proposal documents live under `proposals/`
56
+ - Comment threads live in sidecar `*.comments.json` files
57
+ - Proposal content and comment files are written with SHA checks for conflict detection
58
+
59
+ ---
60
+
61
+ ## Local mode — for power users and AI agents
62
+
63
+ Local mode serves the same UI from your machine, but reads and writes local files instead of going through the GitHub API.
64
+
65
+ ### Quick start
66
+
67
+ **Install once globally, or use directly via npx:**
68
+
69
+ ```bash
70
+ npx redraft-local ./proposals
71
+ ```
72
+
73
+ Or install globally and reuse:
74
+
75
+ ```bash
76
+ npm install -g redraft-local
77
+ redraft-local ./proposals
78
+ ```
79
+
80
+ This starts a local ReDraft server at `http://127.0.0.1:4200` by default. The frontend is bundled into the package — no separate build step required.
81
+
82
+ **Options:**
83
+
84
+ ```
85
+ redraft [directory] [options]
86
+ redraft serve [directory] [options]
87
+
88
+ --port <number> Port to listen on (default: 4200)
89
+ --host <string> Bind address (default: 127.0.0.1)
90
+ --open Open the browser automatically
91
+ --no-ui API-only mode, skip serving the frontend
92
+ ```
93
+
94
+ **Contributing / running from source:**
95
+
96
+ ```bash
97
+ npm install
98
+ npm run build
99
+ npm run serve -- ./proposals
100
+ ```
101
+
102
+ What local mode gives you:
103
+ - No PAT prompt
104
+ - Direct read/write access to local `.md` and `.comments.json` files
105
+ - Live UI updates when files change on disk
106
+ - Optional git convenience endpoints for status and commits
107
+
108
+ ### Working with AI agents
109
+
110
+ Local mode is the intended environment for AI-assisted proposal workflows.
111
+
112
+ The design target is:
113
+ - Agents edit proposal markdown directly on disk
114
+ - Agents use the local ReDraft API for structured comment operations
115
+
116
+ Planned/common AI workflows include:
117
+ - Review unresolved comment threads one by one
118
+ - Draft or post replies
119
+ - Resolve completed threads
120
+ - Revise a proposal based on accumulated feedback
121
+ - Summarize open discussions across proposals
122
+
123
+ ---
124
+
125
+ ## How ReDraft works
126
+
127
+ ReDraft uses one React frontend across all modes.
128
+
129
+ - In **remote mode**, the browser talks to the GitHub REST API.
130
+ - In **local mode**, the browser talks to a local server that mimics the GitHub contents API while reading and writing the filesystem.
131
+ - Comment threads are stored separately from proposal markdown, so review discussion remains structured and portable.
132
+
133
+ For architecture details, see `docs/architecture.md`.
134
+
135
+ ---
136
+
137
+ ## Related documentation
138
+
139
+ - `docs/architecture.md` — system architecture and data flow
140
+ - `docs/development.md` — development setup, build, test, and deployment details
141
+ - `docs/specs/` — design specs and approved technical decisions
142
+ - `docs/plans/` — implementation plans and execution notes
143
+ - `AGENTS.md` — repository guidance for coding agents
package/bin/redraft.js ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+ import(new URL('../dist-server/cli.mjs', import.meta.url)).catch((err) => {
3
+ console.error('Failed to start redraft:', err.message);
4
+ process.exit(1);
5
+ });
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+ import(new URL('../dist-server/cli.mjs', import.meta.url)).catch((err) => {
3
+ console.error('Failed to start redraft:', err.message);
4
+ process.exit(1);
5
+ });
@@ -0,0 +1 @@
1
+ var l={"+":["conjugate","add"],"−":["negate","subtract"],"×":["signOf","multiply"],"÷":["reciprocal","divide"],"⌈":["ceiling","greaterOf"],"⌊":["floor","lesserOf"],"∣":["absolute","residue"],"⍳":["indexGenerate","indexOf"],"?":["roll","deal"],"⋆":["exponentiate","toThePowerOf"],"⍟":["naturalLog","logToTheBase"],"○":["piTimes","circularFuncs"],"!":["factorial","binomial"],"⌹":["matrixInverse","matrixDivide"],"<":[null,"lessThan"],"≤":[null,"lessThanOrEqual"],"=":[null,"equals"],">":[null,"greaterThan"],"≥":[null,"greaterThanOrEqual"],"≠":[null,"notEqual"],"≡":["depth","match"],"≢":[null,"notMatch"],"∈":["enlist","membership"],"⍷":[null,"find"],"∪":["unique","union"],"∩":[null,"intersection"],"∼":["not","without"],"∨":[null,"or"],"∧":[null,"and"],"⍱":[null,"nor"],"⍲":[null,"nand"],"⍴":["shapeOf","reshape"],",":["ravel","catenate"],"⍪":[null,"firstAxisCatenate"],"⌽":["reverse","rotate"],"⊖":["axis1Reverse","axis1Rotate"],"⍉":["transpose",null],"↑":["first","take"],"↓":[null,"drop"],"⊂":["enclose","partitionWithAxis"],"⊃":["diclose","pick"],"⌷":[null,"index"],"⍋":["gradeUp",null],"⍒":["gradeDown",null],"⊤":["encode",null],"⊥":["decode",null],"⍕":["format","formatByExample"],"⍎":["execute",null],"⊣":["stop","left"],"⊢":["pass","right"]},t=/[\.\/⌿⍀¨⍣]/,a=/⍬/,i=/[\+−×÷⌈⌊∣⍳\?⋆⍟○!⌹<≤=>≥≠≡≢∈⍷∪∩∼∨∧⍱⍲⍴,⍪⌽⊖⍉↑↓⊂⊃⌷⍋⍒⊤⊥⍕⍎⊣⊢]/,u=/←/,o=/[⍝#].*$/,s=function(r){var n;return n=!1,function(e){return n=e,e===r?n==="\\":!0}};const f={name:"apl",startState:function(){return{prev:!1,func:!1,op:!1,string:!1,escape:!1}},token:function(r,n){var e;return r.eatSpace()?null:(e=r.next(),e==='"'||e==="'"?(r.eatWhile(s(e)),r.next(),n.prev=!0,"string"):/[\[{\(]/.test(e)?(n.prev=!1,null):/[\]}\)]/.test(e)?(n.prev=!0,null):a.test(e)?(n.prev=!1,"atom"):/[¯\d]/.test(e)?(n.func?(n.func=!1,n.prev=!1):n.prev=!0,r.eatWhile(/[\w\.]/),"number"):t.test(e)||u.test(e)?"operator":i.test(e)?(n.func=!0,n.prev=!1,l[e]?"variableName.function.standard":"variableName.function"):o.test(e)?(r.skipToEnd(),"comment"):e==="∘"&&r.peek()==="."?(r.next(),"variableName.function"):(r.eatWhile(/[\w\$_]/),n.prev=!0,"keyword"))}};export{f as apl};
@@ -0,0 +1 @@
1
+ import{a8 as ln,a9 as an,aa as g,ab as tn,ac as G,ad as j,ae as _,af as un,ag as rn,ah as K,ai as o,aj as z,ak as sn,al as on,am as fn}from"./index-CZY06TRX.js";function cn(l){return l.innerRadius}function gn(l){return l.outerRadius}function yn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,E,q,v,A,B,a){var I=E-l,i=q-h,n=B-v,d=a-A,u=d*I-n*i;if(!(u*u<g))return u=(n*(h-A)-d*(l-v))/u,[l+u*I,h+u*i]}function V(l,h,E,q,v,A,B){var a=l-E,I=h-q,i=(B?A:-A)/K(a*a+I*I),n=i*I,d=-i*a,u=l+n,s=h+d,f=E+n,c=q+d,C=(u+f)/2,t=(s+c)/2,m=f-u,y=c-s,R=m*m+y*y,T=v-A,P=u*c-f*s,O=(y<0?-1:1)*K(fn(0,T*T*R-P*P)),S=(P*y-m*O)/R,k=(-P*m-y*O)/R,w=(P*y+m*O)/R,p=(-P*m+y*O)/R,x=S-C,e=k-t,r=w-C,F=p-t;return x*x+e*e>r*r+F*F&&(S=w,k=p),{cx:S,cy:k,x01:-n,y01:-d,x11:S*(v/T-1),y11:k*(v/T-1)}}function hn(){var l=cn,h=gn,E=z(0),q=null,v=yn,A=dn,B=mn,a=null,I=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-an,c=A.apply(this,arguments)-an,C=un(c-f),t=c>f;if(a||(a=n=I()),s<u&&(d=s,s=u,u=d),!(s>g))a.moveTo(0,0);else if(C>tn-g)a.moveTo(s*G(f),s*j(f)),a.arc(0,0,s,f,c,!t),u>g&&(a.moveTo(u*G(c),u*j(c)),a.arc(0,0,u,c,f,t));else{var m=f,y=c,R=f,T=c,P=C,O=C,S=B.apply(this,arguments)/2,k=S>g&&(q?+q.apply(this,arguments):K(u*u+s*s)),w=_(un(s-u)/2,+E.apply(this,arguments)),p=w,x=w,e,r;if(k>g){var F=sn(k/u*j(S)),L=sn(k/s*j(S));(P-=F*2)>g?(F*=t?1:-1,R+=F,T-=F):(P=0,R=T=(f+c)/2),(O-=L*2)>g?(L*=t?1:-1,m+=L,y-=L):(O=0,m=y=(f+c)/2)}var H=s*G(m),J=s*j(m),M=u*G(T),N=u*j(T);if(w>g){var Q=s*G(y),U=s*j(y),W=u*G(R),X=u*j(R),D;if(C<rn)if(D=pn(H,J,W,X,Q,U,M,N)){var Y=H-D[0],Z=J-D[1],$=Q-D[0],b=U-D[1],nn=1/j(on((Y*$+Z*b)/(K(Y*Y+Z*Z)*K($*$+b*b)))/2),en=K(D[0]*D[0]+D[1]*D[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}O>g?x>g?(e=V(W,X,H,J,s,x,t),r=V(Q,U,M,N,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(H,J),a.arc(0,0,s,m,y,!t)):a.moveTo(H,J),!(u>g)||!(P>g)?a.lineTo(M,N):p>g?(e=V(M,N,Q,U,u,-p,t),r=V(H,J,W,X,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-rn/2;return[G(d)*n,j(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:z(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:z(+n),i):h},i.cornerRadius=function(n){return arguments.length?(E=typeof n=="function"?n:z(+n),i):E},i.padRadius=function(n){return arguments.length?(q=n==null?null:typeof n=="function"?n:z(+n),i):q},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:z(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:z(+n),i):A},i.padAngle=function(n){return arguments.length?(B=typeof n=="function"?n:z(+n),i):B},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};