|
1 | 1 | import type { Metadata } from "next" |
2 | 2 | import { SEO } from "@/lib/seo" |
| 3 | +import fs from "fs" |
| 4 | +import path from "path" |
| 5 | +import ReactMarkdown from "react-markdown" |
| 6 | +import remarkGfm from "remark-gfm" |
3 | 7 |
|
4 | 8 | const TITLE = "Terms of Service" |
5 | 9 | const DESCRIPTION = |
@@ -38,315 +42,52 @@ export const metadata: Metadata = { |
38 | 42 | keywords: [...SEO.keywords, "terms of service", "legal", "agreement", "subscription"], |
39 | 43 | } |
40 | 44 |
|
41 | | -export default function Terms() { |
42 | | - return ( |
43 | | - <> |
44 | | - <div className="container mx-auto px-4 py-12 sm:px-6 lg:px-8"> |
45 | | - <div className="prose prose-lg mx-auto max-w-4xl dark:prose-invert"> |
46 | | - <h1 className="text-3xl font-bold tracking-tight sm:text-4xl md:text-5xl"> |
47 | | - Roo Code Cloud Terms of Service |
48 | | - </h1> |
49 | | - <p className="text-muted-foreground"> |
50 | | - <em>(Version 1.0 – Effective June 19, 2025)</em> |
51 | | - </p> |
52 | | - |
53 | | - <p className="lead"> |
54 | | - These Terms of Service ("<strong>TOS</strong>") govern access to and use of the Roo |
55 | | - Code Cloud service (the "<strong>Service</strong>"). They apply to: |
56 | | - </p> |
57 | | - <ul className="lead"> |
58 | | - <li> |
59 | | - <strong>(a)</strong> every <strong>Sales Order Form</strong> or similar document mutually |
60 | | - executed by Roo Code and the customer that references these TOS; <strong>and</strong> |
61 | | - </li> |
62 | | - <li> |
63 | | - <strong>(b)</strong> any{" "} |
64 | | - <strong>online plan-selection, self-service sign-up, or in-app purchase flow</strong>{" "} |
65 | | - through which a customer clicks an "I Agree" (or equivalent) button to accept |
66 | | - these TOS — such flow also being an <strong>"Order Form."</strong> |
67 | | - </li> |
68 | | - </ul> |
69 | | - |
70 | | - <p> |
71 | | - By <strong>creating an account, clicking to accept, or using the Service</strong>, the person or |
72 | | - entity doing so ("<strong>Customer</strong>") agrees to be bound by these TOS, even if |
73 | | - no separate Order Form is signed. |
74 | | - </p> |
| 45 | +function getTermsContent() { |
| 46 | + const filePath = path.join(process.cwd(), "src/app/terms/terms.md") |
| 47 | + return fs.readFileSync(filePath, "utf8") |
| 48 | +} |
75 | 49 |
|
76 | | - <p> |
77 | | - If Roo Code and Customer later execute a Master Subscription Agreement (" |
78 | | - <strong>MSA</strong>"), the MSA governs; otherwise, these TOS and the applicable Order Form |
79 | | - together form the entire agreement (the "<strong>Agreement</strong>"). |
80 | | - </p> |
| 50 | +export default function Terms() { |
| 51 | + const content = getTermsContent() |
81 | 52 |
|
82 | | - <h2 className="mt-12 text-2xl font-bold">1. Agreement Framework</h2> |
83 | | - <ol> |
84 | | - <li> |
85 | | - <strong>Incorporation of Standard Terms.</strong> |
86 | | - <br /> |
87 | | - The{" "} |
| 53 | + return ( |
| 54 | + <div className="container mx-auto px-4 py-12 sm:px-6 lg:px-8"> |
| 55 | + <div className="prose prose-lg mx-auto max-w-4xl dark:prose-invert"> |
| 56 | + <ReactMarkdown |
| 57 | + remarkPlugins={[remarkGfm]} |
| 58 | + components={{ |
| 59 | + h1: ({ ...props }) => ( |
| 60 | + <h1 className="text-3xl font-bold tracking-tight sm:text-4xl md:text-5xl" {...props} /> |
| 61 | + ), |
| 62 | + h2: ({ ...props }) => <h2 className="mt-12 text-2xl font-bold" {...props} />, |
| 63 | + a: ({ ...props }) => ( |
88 | 64 | <a |
89 | | - href="https://commonpaper.com/standards/cloud-service-agreement/2.0/" |
| 65 | + className="text-primary hover:underline" |
90 | 66 | target="_blank" |
91 | 67 | rel="noopener noreferrer" |
92 | | - className="text-primary hover:underline"> |
93 | | - <em>Common Paper Cloud Service Standard Terms v 2.0</em> |
94 | | - </a>{" "} |
95 | | - (the "<strong>Standard Terms</strong>") are incorporated by reference. If these |
96 | | - TOS conflict with the Standard Terms, these TOS control. |
97 | | - </li> |
98 | | - <li> |
99 | | - <strong>Order of Precedence.</strong> |
100 | | - <br /> |
101 | | - (a) Order Form (b) these TOS (c) Standard Terms. |
102 | | - </li> |
103 | | - </ol> |
104 | | - |
105 | | - <h2 className="mt-12 text-2xl font-bold">2. Key Commercial Terms</h2> |
106 | | - |
107 | | - <div className="overflow-x-auto"> |
108 | | - <table className="min-w-full border-collapse border border-border"> |
109 | | - <thead> |
110 | | - <tr className="bg-muted/50"> |
111 | | - <th className="border border-border px-4 py-2 text-left font-semibold">Term</th> |
112 | | - <th className="border border-border px-4 py-2 text-left font-semibold">Value</th> |
113 | | - </tr> |
114 | | - </thead> |
115 | | - <tbody> |
116 | | - <tr> |
117 | | - <td className="border border-border px-4 py-2 font-medium"> |
118 | | - Governing Law / Forum |
119 | | - </td> |
120 | | - <td className="border border-border px-4 py-2"> |
121 | | - Delaware law; exclusive jurisdiction and venue in the state or federal courts |
122 | | - located in Delaware |
123 | | - </td> |
124 | | - </tr> |
125 | | - <tr className="bg-muted/25"> |
126 | | - <td className="border border-border px-4 py-2 font-medium"> |
127 | | - Plans & Subscription Periods |
128 | | - </td> |
129 | | - <td className="border border-border px-4 py-2"> |
130 | | - <em>Free Plan:</em> month-to-month. |
131 | | - <br /> |
132 | | - <em>Paid Plans:</em> Monthly <strong>or</strong> Annual, as selected in an Order |
133 | | - Form or the online flow. |
134 | | - </td> |
135 | | - </tr> |
136 | | - <tr> |
137 | | - <td className="border border-border px-4 py-2 font-medium"> |
138 | | - Auto-Renewal & Non-Renewal Notice |
139 | | - </td> |
140 | | - <td className="border border-border px-4 py-2"> |
141 | | - <em>Free Plan:</em> renews continuously until cancelled in the dashboard. |
142 | | - <br /> |
143 | | - <em>Paid Plans:</em> renew for the same period unless either party gives 30 |
144 | | - days' written notice before the current period ends. |
145 | | - </td> |
146 | | - </tr> |
147 | | - <tr className="bg-muted/25"> |
148 | | - <td className="border border-border px-4 py-2 font-medium">Fees & Usage</td> |
149 | | - <td className="border border-border px-4 py-2"> |
150 | | - <em>Free Plan:</em> Subscription Fee = $0. |
151 | | - <br /> |
152 | | - <em>Paid Plans:</em> Fees stated in the Order Form or online checkout{" "} |
153 | | - <strong>plus</strong> usage-based fees, calculated and invoiced monthly. |
154 | | - </td> |
155 | | - </tr> |
156 | | - <tr> |
157 | | - <td className="border border-border px-4 py-2 font-medium">Payment Terms</td> |
158 | | - <td className="border border-border px-4 py-2"> |
159 | | - <em>Monthly paid plans:</em> credit-card charge on the billing date. |
160 | | - <br /> |
161 | | - <em>Annual paid plans:</em> invoiced Net 30 (credit card optional). |
162 | | - </td> |
163 | | - </tr> |
164 | | - <tr className="bg-muted/25"> |
165 | | - <td className="border border-border px-4 py-2 font-medium"> |
166 | | - General Liability Cap |
167 | | - </td> |
168 | | - <td className="border border-border px-4 py-2"> |
169 | | - The greater of (i) USD 100 and (ii) 1 × Fees paid or payable in the 12 months |
170 | | - before the event giving rise to liability. |
171 | | - </td> |
172 | | - </tr> |
173 | | - <tr> |
174 | | - <td className="border border-border px-4 py-2 font-medium"> |
175 | | - Increased Cap / Unlimited Claims |
176 | | - </td> |
177 | | - <td className="border border-border px-4 py-2">None</td> |
178 | | - </tr> |
179 | | - <tr className="bg-muted/25"> |
180 | | - <td className="border border-border px-4 py-2 font-medium">Trial / Pilot</td> |
181 | | - <td className="border border-border px-4 py-2">Not offered</td> |
182 | | - </tr> |
183 | | - <tr> |
184 | | - <td className="border border-border px-4 py-2 font-medium">Beta Features</td> |
185 | | - <td className="border border-border px-4 py-2"> |
186 | | - None – only generally available features are provided |
187 | | - </td> |
188 | | - </tr> |
189 | | - <tr className="bg-muted/25"> |
190 | | - <td className="border border-border px-4 py-2 font-medium">Security Standard</td> |
191 | | - <td className="border border-border px-4 py-2"> |
192 | | - Roo Code maintains commercially reasonable administrative, physical, and |
193 | | - technical safeguards |
194 | | - </td> |
195 | | - </tr> |
196 | | - <tr> |
197 | | - <td className="border border-border px-4 py-2 font-medium">Machine-Learning Use</td> |
198 | | - <td className="border border-border px-4 py-2"> |
199 | | - Roo Code <strong>does not</strong> use Customer Content to train, fine-tune, or |
200 | | - improve any ML or AI models |
201 | | - </td> |
202 | | - </tr> |
203 | | - <tr className="bg-muted/25"> |
204 | | - <td className="border border-border px-4 py-2 font-medium"> |
205 | | - Data Processing Addendum (DPA) |
206 | | - </td> |
207 | | - <td className="border border-border px-4 py-2"> |
208 | | - GDPR/CCPA-ready DPA available upon written request |
209 | | - </td> |
210 | | - </tr> |
211 | | - <tr> |
212 | | - <td className="border border-border px-4 py-2 font-medium"> |
213 | | - Publicity / Logo Rights |
214 | | - </td> |
215 | | - <td className="border border-border px-4 py-2"> |
216 | | - Roo Code may identify Customer (name & logo) in marketing materials unless |
217 | | - Customer opts out in writing |
218 | | - </td> |
219 | | - </tr> |
220 | | - </tbody> |
221 | | - </table> |
222 | | - </div> |
223 | | - |
224 | | - <h2 className="mt-12 text-2xl font-bold">3. Modifications to the Standard Terms</h2> |
225 | | - <ol> |
226 | | - <li> |
227 | | - <strong>Section 1.6 (Machine Learning).</strong> |
228 | | - <br /> |
229 | | - "Provider will not use Customer Content or Usage Data to train, fine-tune, or improve |
230 | | - any machine-learning or AI model, except with Customer's prior written consent." |
231 | | - </li> |
232 | | - <li> |
233 | | - <strong>Section 3 (Security).</strong> |
234 | | - <br /> |
235 | | - Replace "reasonable" with "commercially reasonable." |
236 | | - </li> |
237 | | - <li> |
238 | | - <strong>Section 4 (Fees & Payment).</strong> |
239 | | - <br /> |
240 | | - Add usage-billing language above and delete any provision allowing unilateral fee increases. |
241 | | - </li> |
242 | | - <li> |
243 | | - <strong>Section 5 (Term & Termination).</strong> |
244 | | - <br /> |
245 | | - Insert auto-renewal and free-plan language above. |
246 | | - </li> |
247 | | - <li> |
248 | | - <strong>Sections 7 (Trials / Betas) and any SLA references.</strong> |
249 | | - <br /> |
250 | | - Deleted – Roo Code offers no trials, pilots, betas, or SLA credits under these TOS. |
251 | | - </li> |
252 | | - <li> |
253 | | - <strong>Section 12.12 (Publicity).</strong> |
254 | | - <br /> |
255 | | - As reflected in the "Publicity / Logo Rights" row above. |
256 | | - </li> |
257 | | - </ol> |
258 | | - |
259 | | - <h2 className="mt-12 text-2xl font-bold">4. Use of the Service</h2> |
260 | | - <p> |
261 | | - Customer may access and use the Service solely for its internal business purposes and subject to |
262 | | - the Acceptable Use Policy in the Standard Terms. |
263 | | - </p> |
264 | | - |
265 | | - <h2 className="mt-12 text-2xl font-bold">5. Account Management & Termination</h2> |
266 | | - <ul> |
267 | | - <li> |
268 | | - <strong>Self-service cancellation or downgrade.</strong> |
269 | | - <br /> |
270 | | - Customer may cancel a Free Plan immediately, or cancel/downgrade a Paid Plan effective at |
271 | | - the end of the current billing cycle, via the web dashboard. |
272 | | - </li> |
273 | | - <li> |
274 | | - Either party may otherwise terminate the Agreement as allowed under Section 5 of the |
275 | | - Standard Terms. |
276 | | - </li> |
277 | | - </ul> |
278 | | - |
279 | | - <h2 className="mt-12 text-2xl font-bold">6. Privacy & Data</h2> |
280 | | - <p> |
281 | | - Roo Code's Privacy Notice ( |
282 | | - <a |
283 | | - href="https://roocode.com/privacy" |
284 | | - rel="noopener noreferrer" |
285 | | - className="text-primary hover:underline"> |
286 | | - https://roocode.com/privacy |
287 | | - </a> |
288 | | - ) explains how Roo Code collects and handles personal information. If Customer requires a DPA, |
289 | | - email{" "} |
290 | | - <a href="mailto:[email protected]" className="text-primary hover:underline"> |
291 | | - |
292 | | - </a> |
293 | | - . |
294 | | - </p> |
295 | | - |
296 | | - <h2 className="mt-12 text-2xl font-bold">7. Warranty Disclaimer</h2> |
297 | | - <p> |
298 | | - Except as expressly stated in the Agreement, the Service is provided{" "} |
299 | | - <strong>"as is,"</strong> and all implied warranties are disclaimed to the maximum |
300 | | - extent allowed by law. |
301 | | - </p> |
302 | | - |
303 | | - <h2 className="mt-12 text-2xl font-bold">8. Limitation of Liability</h2> |
304 | | - <p> |
305 | | - The caps in Section 2 apply to all claims under the Agreement, whether in contract, tort, or |
306 | | - otherwise, except for Excluded Claims defined in the Standard Terms. |
307 | | - </p> |
308 | | - |
309 | | - <h2 className="mt-12 text-2xl font-bold">9. Miscellaneous</h2> |
310 | | - <ol> |
311 | | - <li> |
312 | | - <strong>Assignment.</strong> |
313 | | - <br /> |
314 | | - Customer may not assign the Agreement without Roo Code's prior written consent, except |
315 | | - to a successor in a merger or sale of substantially all assets. |
316 | | - </li> |
317 | | - <li> |
318 | | - <strong>Export Compliance.</strong> |
319 | | - <br /> |
320 | | - Each party will comply with all applicable export-control laws and regulations and will not |
321 | | - export or re-export any software or technical data without the required government licences. |
322 | | - </li> |
323 | | - <li> |
324 | | - <strong>Entire Agreement.</strong> |
325 | | - <br /> |
326 | | - The Agreement supersedes all prior or contemporaneous agreements for the Service. |
327 | | - </li> |
328 | | - <li> |
329 | | - <strong>Amendments.</strong> |
330 | | - <br /> |
331 | | - Roo Code may update these TOS by posting a revised version at the same URL and emailing or |
332 | | - in-app notifying Customer at least 30 days before changes take effect. Continued use after |
333 | | - the effective date constitutes acceptance. |
334 | | - </li> |
335 | | - </ol> |
336 | | - |
337 | | - <h2 className="mt-12 text-2xl font-bold">10. Contact</h2> |
338 | | - <p> |
339 | | - <strong>Roo Code, Inc.</strong> |
340 | | - <br /> |
341 | | - 98 Graceland Dr, San Rafael, CA 94901 USA |
342 | | - <br /> |
343 | | - Email:{" "} |
344 | | - <a href="mailto:[email protected]" className="text-primary hover:underline"> |
345 | | - |
346 | | - </a> |
347 | | - </p> |
348 | | - </div> |
| 68 | + {...props} |
| 69 | + /> |
| 70 | + ), |
| 71 | + table: ({ ...props }) => ( |
| 72 | + <div className="overflow-x-auto"> |
| 73 | + <table className="min-w-full border-collapse border border-border" {...props} /> |
| 74 | + </div> |
| 75 | + ), |
| 76 | + th: ({ ...props }) => ( |
| 77 | + <th className="border border-border px-4 py-2 text-left font-semibold" {...props} /> |
| 78 | + ), |
| 79 | + td: ({ node: _node, ...props }) => { |
| 80 | + // Check if this is the first column (Term column) |
| 81 | + const isTermColumn = _node?.position?.start.column === 1 |
| 82 | + if (isTermColumn) { |
| 83 | + return <td className="border border-border px-4 py-2 font-medium" {...props} /> |
| 84 | + } |
| 85 | + return <td className="border border-border px-4 py-2" {...props} /> |
| 86 | + }, |
| 87 | + }}> |
| 88 | + {content} |
| 89 | + </ReactMarkdown> |
349 | 90 | </div> |
350 | | - </> |
| 91 | + </div> |
351 | 92 | ) |
352 | 93 | } |
0 commit comments