@adminide-stack/yantra-help-browser 12.0.16-alpha.28 → 12.0.16-alpha.30
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.
- package/lib/components/HelpCenterFooter.js +1 -1
- package/lib/components/HelpCenterFooter.js.map +1 -1
- package/lib/components/navbar/index.d.ts.map +1 -1
- package/lib/components/navbar/index.js +4 -0
- package/lib/components/navbar/index.js.map +1 -1
- package/lib/compute.d.ts +2 -0
- package/lib/compute.d.ts.map +1 -1
- package/lib/compute.js +19 -1
- package/lib/compute.js.map +1 -1
- package/lib/pages/Blog/index.d.ts +3 -0
- package/lib/pages/Blog/index.d.ts.map +1 -0
- package/lib/pages/Blog/index.js +172 -0
- package/lib/pages/Blog/index.js.map +1 -0
- package/lib/pages/BlogPost/index.d.ts +3 -0
- package/lib/pages/BlogPost/index.d.ts.map +1 -0
- package/lib/pages/BlogPost/index.js +209 -0
- package/lib/pages/BlogPost/index.js.map +1 -0
- package/lib/pages/HelpCenter/index.d.ts.map +1 -1
- package/lib/pages/HelpCenter/index.js +1 -1
- package/lib/pages/HelpCenter/index.js.map +1 -1
- package/lib/pages/Privacy/index.d.ts +1 -1
- package/lib/pages/Privacy/index.d.ts.map +1 -1
- package/lib/pages/Privacy/index.js +433 -44
- package/lib/pages/Privacy/index.js.map +1 -1
- package/lib/routes.json +22 -0
- package/lib/templates/content/blog/how-yantra-browser-automates-workflows.md +120 -0
- package/lib/templates/content/blog/introducing-yantra-browser.md +90 -0
- package/lib/templates/content/blog/yantra-browser-productivity-tips.md +98 -0
- package/lib/templates/content/browser-extension/browser-extension-overview.md +60 -0
- package/lib/templates/content/browser-extension/extension-security.md +126 -0
- package/lib/templates/content/browser-extension/getting-started-extension.md +96 -0
- package/lib/templates/content/browser-extension/how-it-works.md +112 -0
- package/lib/templates/content/browser-extension/troubleshooting-extension.md +138 -0
- package/lib/templates/content/browser-extension/use-cases-workflows.md +123 -0
- package/lib/templates/content/content-manifest.json +575 -0
- package/package.json +2 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {jsxs,jsx}from'react/jsx-runtime';import {PageHero}from'../../components/PageHero.js';import {
|
|
1
|
+
import {jsxs,jsx}from'react/jsx-runtime';import {PageHero}from'../../components/PageHero.js';import {Icons}from'../../components/Icons.js';function PrivacyPage() {
|
|
2
2
|
return jsxs("div", {
|
|
3
3
|
className: "min-h-screen bg-background",
|
|
4
4
|
children: [jsx(PageHero, {
|
|
@@ -10,51 +10,440 @@ import {jsxs,jsx}from'react/jsx-runtime';import {PageHero}from'../../components/
|
|
|
10
10
|
}), jsx("section", {
|
|
11
11
|
className: "py-16",
|
|
12
12
|
children: jsxs("div", {
|
|
13
|
-
className: "container mx-auto max-w-
|
|
14
|
-
children: [
|
|
15
|
-
className: "
|
|
16
|
-
children:
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
})
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
13
|
+
className: "container mx-auto max-w-3xl px-6 lg:px-16",
|
|
14
|
+
children: [jsx("p", {
|
|
15
|
+
className: "mb-2 text-sm text-muted-foreground",
|
|
16
|
+
children: "Updated and Effective: March 21, 2026"
|
|
17
|
+
}), jsx("p", {
|
|
18
|
+
className: "mb-4 text-foreground",
|
|
19
|
+
children: "This Privacy Policy (\"Policy\") applies to the Yantra platform, including the Yantra web application, Yantra Browser Chrome extension, and related services (together, the \"Platform\"), owned and operated by CDEBase, Inc. d/b/a Yantra (\"Yantra,\" \"we,\" or \"us\"). This Policy describes how we collect, use, and disclose your personal information."
|
|
20
|
+
}), jsx("p", {
|
|
21
|
+
className: "mb-8 text-foreground",
|
|
22
|
+
children: "By using the Platform, you consent to our Policy, Terms of Use, and any additional applicable policies and terms we post."
|
|
23
|
+
}), jsxs("nav", {
|
|
24
|
+
className: "mb-10 rounded-lg border border-border/60 bg-muted/50 p-6",
|
|
25
|
+
children: [jsx("h2", {
|
|
26
|
+
className: "mb-3 text-lg font-semibold text-foreground",
|
|
27
|
+
children: "Table of Contents"
|
|
28
|
+
}), jsxs("ol", {
|
|
29
|
+
className: "list-inside list-decimal space-y-1 text-sm text-primary",
|
|
30
|
+
children: [jsx("li", {
|
|
31
|
+
children: jsx("a", {
|
|
32
|
+
href: "#collect",
|
|
33
|
+
children: "What Information Does the Platform Collect?"
|
|
34
|
+
})
|
|
35
|
+
}), jsx("li", {
|
|
36
|
+
children: jsx("a", {
|
|
37
|
+
href: "#use",
|
|
38
|
+
children: "How Does the Platform Use the Information It Collects?"
|
|
39
|
+
})
|
|
40
|
+
}), jsx("li", {
|
|
41
|
+
children: jsx("a", {
|
|
42
|
+
href: "#share",
|
|
43
|
+
children: "Under What Circumstances Does the Platform Share or Disclose Information?"
|
|
44
|
+
})
|
|
45
|
+
}), jsx("li", {
|
|
46
|
+
children: jsx("a", {
|
|
47
|
+
href: "#third-party",
|
|
48
|
+
children: "Third Party Content and Links"
|
|
49
|
+
})
|
|
50
|
+
}), jsx("li", {
|
|
51
|
+
children: jsx("a", {
|
|
52
|
+
href: "#audience",
|
|
53
|
+
children: "General Audience Platform"
|
|
54
|
+
})
|
|
55
|
+
}), jsx("li", {
|
|
56
|
+
children: jsx("a", {
|
|
57
|
+
href: "#security",
|
|
58
|
+
children: "How We Handle Data Security"
|
|
59
|
+
})
|
|
60
|
+
}), jsx("li", {
|
|
61
|
+
children: jsx("a", {
|
|
62
|
+
href: "#choices",
|
|
63
|
+
children: "Your Choices About the Information We Collect"
|
|
64
|
+
})
|
|
65
|
+
}), jsx("li", {
|
|
66
|
+
children: jsx("a", {
|
|
67
|
+
href: "#transfer",
|
|
68
|
+
children: "Consent to International Transfer of Your Information"
|
|
69
|
+
})
|
|
70
|
+
}), jsx("li", {
|
|
71
|
+
children: jsx("a", {
|
|
72
|
+
href: "#changes",
|
|
73
|
+
children: "Changes to This Privacy Policy"
|
|
74
|
+
})
|
|
75
|
+
}), jsx("li", {
|
|
76
|
+
children: jsx("a", {
|
|
77
|
+
href: "#contact",
|
|
78
|
+
children: "Contact Us"
|
|
79
|
+
})
|
|
80
|
+
}), jsx("li", {
|
|
81
|
+
children: jsx("a", {
|
|
82
|
+
href: "#california",
|
|
83
|
+
children: "Notice to California Residents"
|
|
84
|
+
})
|
|
85
|
+
}), jsx("li", {
|
|
86
|
+
children: jsx("a", {
|
|
87
|
+
href: "#nevada",
|
|
88
|
+
children: "Notice to Nevada Residents"
|
|
89
|
+
})
|
|
90
|
+
})]
|
|
91
|
+
})]
|
|
92
|
+
}), jsxs("section", {
|
|
93
|
+
id: "collect",
|
|
94
|
+
className: "mb-10",
|
|
95
|
+
children: [jsx("h2", {
|
|
96
|
+
className: "mb-4 text-2xl font-semibold text-foreground",
|
|
97
|
+
children: "1. What Information Does the Platform Collect?"
|
|
98
|
+
}), jsx("p", {
|
|
99
|
+
className: "mb-4 text-muted-foreground",
|
|
100
|
+
children: "We may collect information from you directly, automatically when you use the Platform, and from your interactions with websites you choose to automate. Some of this information may be considered \"personal information\" under various applicable laws. We consider information that identifies you as a specific, identified individual (such as your name, email address, or account credentials) to be personal information."
|
|
101
|
+
}), jsx("p", {
|
|
102
|
+
className: "mb-4 text-muted-foreground",
|
|
103
|
+
children: "Note that we may de-identify personal information so that it is non-personal, such as aggregating or converting it to a code, sometimes using a function commonly known as a \"hash.\" We will treat de-identified information as non-personal to the fullest extent allowed by applicable law."
|
|
104
|
+
}), jsx("h3", {
|
|
105
|
+
className: "mb-2 mt-6 text-lg font-medium text-foreground",
|
|
106
|
+
children: "Information You Provide Directly"
|
|
107
|
+
}), jsxs("ul", {
|
|
108
|
+
className: "mb-4 list-inside list-disc space-y-2 text-sm text-muted-foreground",
|
|
109
|
+
children: [jsxs("li", {
|
|
110
|
+
children: [jsx("strong", {
|
|
111
|
+
className: "text-foreground",
|
|
112
|
+
children: "Account Information:"
|
|
113
|
+
}), " When you create an account or sign in, we collect your name, email address, and user ID. When using the Chrome extension, we access your existing web application session to authenticate you."]
|
|
114
|
+
}), jsxs("li", {
|
|
115
|
+
children: [jsx("strong", {
|
|
116
|
+
className: "text-foreground",
|
|
117
|
+
children: "Configuration Settings:"
|
|
118
|
+
}), " You may provide server configuration details, preferences, and settings through the Platform. These are stored locally in your browser or in your account."]
|
|
119
|
+
}), jsxs("li", {
|
|
120
|
+
children: [jsx("strong", {
|
|
121
|
+
className: "text-foreground",
|
|
122
|
+
children: "Search Queries:"
|
|
123
|
+
}), " Queries you enter into the Yantra search and AI assistant to receive results and perform tasks."]
|
|
124
|
+
}), jsxs("li", {
|
|
125
|
+
children: [jsx("strong", {
|
|
126
|
+
className: "text-foreground",
|
|
127
|
+
children: "Communications:"
|
|
128
|
+
}), " Information you provide when contacting our support team or providing feedback."]
|
|
129
|
+
})]
|
|
130
|
+
}), jsx("h3", {
|
|
131
|
+
className: "mb-2 mt-6 text-lg font-medium text-foreground",
|
|
132
|
+
children: "Information We Collect Automatically"
|
|
133
|
+
}), jsxs("ul", {
|
|
134
|
+
className: "mb-4 list-inside list-disc space-y-2 text-sm text-muted-foreground",
|
|
135
|
+
children: [jsxs("li", {
|
|
136
|
+
children: [jsx("strong", {
|
|
137
|
+
className: "text-foreground",
|
|
138
|
+
children: "Authentication Tokens:"
|
|
139
|
+
}), " The Platform reads session cookies and authentication tokens from Yantra web application domains to authenticate API requests to our backend services."]
|
|
140
|
+
}), jsxs("li", {
|
|
141
|
+
children: [jsx("strong", {
|
|
142
|
+
className: "text-foreground",
|
|
143
|
+
children: "Usage Information:"
|
|
144
|
+
}), " We collect information about how you interact with the Platform, including features used, pages visited, and search queries performed."]
|
|
145
|
+
}), jsxs("li", {
|
|
146
|
+
children: [jsx("strong", {
|
|
147
|
+
className: "text-foreground",
|
|
148
|
+
children: "Device Information:"
|
|
149
|
+
}), " Browser type, operating system, device type, and screen resolution."]
|
|
150
|
+
}), jsxs("li", {
|
|
151
|
+
children: [jsx("strong", {
|
|
152
|
+
className: "text-foreground",
|
|
153
|
+
children: "Tab Metadata (Extension):"
|
|
154
|
+
}), " When using the Chrome extension, we access browser tab information including tab IDs, page URLs, page titles, and window identifiers to route automation commands to the correct browser tabs."]
|
|
155
|
+
}), jsxs("li", {
|
|
156
|
+
children: [jsx("strong", {
|
|
157
|
+
className: "text-foreground",
|
|
158
|
+
children: "Page Content (Extension):"
|
|
159
|
+
}), " When you activate browser automation on a tab, the extension captures page content through Chrome DevTools Protocol (CDP), including DOM snapshots, accessibility tree data, page screenshots, and JavaScript execution results."]
|
|
160
|
+
}), jsxs("li", {
|
|
161
|
+
children: [jsx("strong", {
|
|
162
|
+
className: "text-foreground",
|
|
163
|
+
children: "Navigation Events (Extension):"
|
|
164
|
+
}), " The extension monitors page navigation events on relay-attached tabs to maintain automation state."]
|
|
165
|
+
})]
|
|
166
|
+
}), jsx("h3", {
|
|
167
|
+
className: "mb-2 mt-6 text-lg font-medium text-foreground",
|
|
168
|
+
children: "Information We Do Not Collect"
|
|
169
|
+
}), jsx("p", {
|
|
170
|
+
className: "mb-2 text-sm text-muted-foreground",
|
|
171
|
+
children: "The Platform does not collect:"
|
|
172
|
+
}), jsxs("ul", {
|
|
173
|
+
className: "list-inside list-disc space-y-1 text-sm text-muted-foreground",
|
|
174
|
+
children: [jsx("li", {
|
|
175
|
+
children: "Browsing history of tabs not actively attached to the relay"
|
|
176
|
+
}), jsx("li", {
|
|
177
|
+
children: "Keystrokes or form input on non-automated tabs"
|
|
178
|
+
}), jsx("li", {
|
|
179
|
+
children: "Personal files from your device"
|
|
180
|
+
}), jsx("li", {
|
|
181
|
+
children: "Location data (GPS or IP-based)"
|
|
182
|
+
}), jsx("li", {
|
|
183
|
+
children: "Financial or payment information (beyond what is processed by our payment provider)"
|
|
184
|
+
}), jsx("li", {
|
|
185
|
+
children: "Health information"
|
|
186
|
+
}), jsx("li", {
|
|
187
|
+
children: "Microphone or camera data"
|
|
188
|
+
})]
|
|
189
|
+
})]
|
|
190
|
+
}), jsxs("section", {
|
|
191
|
+
id: "use",
|
|
192
|
+
className: "mb-10",
|
|
193
|
+
children: [jsx("h2", {
|
|
194
|
+
className: "mb-4 text-2xl font-semibold text-foreground",
|
|
195
|
+
children: "2. How Does the Platform Use the Information It Collects?"
|
|
196
|
+
}), jsx("p", {
|
|
197
|
+
className: "mb-4 text-muted-foreground",
|
|
198
|
+
children: "We use information collected from or about you, including personal information, as disclosed in this Policy, including to:"
|
|
199
|
+
}), jsxs("ul", {
|
|
200
|
+
className: "list-inside list-disc space-y-2 text-sm text-muted-foreground",
|
|
201
|
+
children: [jsxs("li", {
|
|
202
|
+
children: [jsx("strong", {
|
|
203
|
+
className: "text-foreground",
|
|
204
|
+
children: "Enable AI Search and Automation:"
|
|
205
|
+
}), " Provide search results, AI-driven browser automation, and task completion services."]
|
|
206
|
+
}), jsxs("li", {
|
|
207
|
+
children: [jsx("strong", {
|
|
208
|
+
className: "text-foreground",
|
|
209
|
+
children: "Authenticate Your Session:"
|
|
210
|
+
}), " Verify your identity and maintain secure connections between the Platform and our backend services."]
|
|
211
|
+
}), jsxs("li", {
|
|
212
|
+
children: [jsx("strong", {
|
|
213
|
+
className: "text-foreground",
|
|
214
|
+
children: "Personalize Your Experience:"
|
|
215
|
+
}), " Customize search results, recommendations, and interface preferences based on your usage patterns."]
|
|
216
|
+
}), jsxs("li", {
|
|
217
|
+
children: [jsx("strong", {
|
|
218
|
+
className: "text-foreground",
|
|
219
|
+
children: "Maintain Relay Connections:"
|
|
220
|
+
}), " Manage WebSocket connections to the relay server, monitor connection health, and automatically reconnect when connections are interrupted."]
|
|
221
|
+
}), jsxs("li", {
|
|
222
|
+
children: [jsx("strong", {
|
|
223
|
+
className: "text-foreground",
|
|
224
|
+
children: "Communicate With You:"
|
|
225
|
+
}), " Respond to your questions, send important notices, and provide customer support."]
|
|
226
|
+
}), jsxs("li", {
|
|
227
|
+
children: [jsx("strong", {
|
|
228
|
+
className: "text-foreground",
|
|
229
|
+
children: "Improve the Platform:"
|
|
230
|
+
}), " Diagnose technical issues, analyze usage patterns, and improve reliability and performance."]
|
|
231
|
+
}), jsxs("li", {
|
|
232
|
+
children: [jsx("strong", {
|
|
233
|
+
className: "text-foreground",
|
|
234
|
+
children: "Comply with Legal Requirements:"
|
|
235
|
+
}), " Fulfill legal obligations and enforce our terms and policies."]
|
|
236
|
+
})]
|
|
237
|
+
})]
|
|
238
|
+
}), jsxs("section", {
|
|
239
|
+
id: "share",
|
|
240
|
+
className: "mb-10",
|
|
241
|
+
children: [jsx("h2", {
|
|
242
|
+
className: "mb-4 text-2xl font-semibold text-foreground",
|
|
243
|
+
children: "3. Under What Circumstances Does the Platform Share or Disclose Information?"
|
|
244
|
+
}), jsx("p", {
|
|
245
|
+
className: "mb-4 text-muted-foreground",
|
|
246
|
+
children: "We do not sell your personal information to third parties. We do not share your personal information with third parties for those third parties' own direct marketing purposes. We may share information in the following circumstances:"
|
|
247
|
+
}), jsx("h3", {
|
|
248
|
+
className: "mb-2 mt-4 text-lg font-medium text-foreground",
|
|
249
|
+
children: "AI Backend Services"
|
|
250
|
+
}), jsx("p", {
|
|
251
|
+
className: "mb-4 text-sm text-muted-foreground",
|
|
252
|
+
children: "Search queries, page content, accessibility data, screenshots, and tab metadata from relay-attached tabs are transmitted to the Yantra AI backend via secure connections. This data is processed to execute your requested tasks and is not used for advertising or marketing purposes."
|
|
253
|
+
}), jsx("h3", {
|
|
254
|
+
className: "mb-2 mt-4 text-lg font-medium text-foreground",
|
|
255
|
+
children: "Service Providers"
|
|
256
|
+
}), jsx("p", {
|
|
257
|
+
className: "mb-4 text-sm text-muted-foreground",
|
|
258
|
+
children: "We use third-party service providers to provide services to us or on our behalf, such as cloud hosting, payment processing, and analytics. We give these providers access to your information so they can provide these services."
|
|
259
|
+
}), jsx("h3", {
|
|
260
|
+
className: "mb-2 mt-4 text-lg font-medium text-foreground",
|
|
261
|
+
children: "Business, Tax, and Legal Purposes"
|
|
262
|
+
}), jsx("p", {
|
|
263
|
+
className: "mb-4 text-sm text-muted-foreground",
|
|
264
|
+
children: "To the extent permitted by law, we may disclose your information to third parties to protect the integrity of the Platform, enforce our Terms of Use, or comply with lawfully authorized government requests such as subpoenas or court orders."
|
|
265
|
+
}), jsx("h3", {
|
|
266
|
+
className: "mb-2 mt-4 text-lg font-medium text-foreground",
|
|
267
|
+
children: "Business Transfers and Transitions"
|
|
268
|
+
}), jsx("p", {
|
|
269
|
+
className: "mb-4 text-sm text-muted-foreground",
|
|
270
|
+
children: "We may, in evaluating or engaging in a sale of assets, merger, or other corporate transaction, transfer or assign your personal information, which you agree that we may do without your further consent."
|
|
271
|
+
}), jsx("h3", {
|
|
272
|
+
className: "mb-2 mt-4 text-lg font-medium text-foreground",
|
|
273
|
+
children: "With Your Consent"
|
|
274
|
+
}), jsx("p", {
|
|
275
|
+
className: "text-sm text-muted-foreground",
|
|
276
|
+
children: "We may share information when you direct us to do so."
|
|
277
|
+
})]
|
|
278
|
+
}), jsxs("section", {
|
|
279
|
+
id: "third-party",
|
|
280
|
+
className: "mb-10",
|
|
281
|
+
children: [jsx("h2", {
|
|
282
|
+
className: "mb-4 text-2xl font-semibold text-foreground",
|
|
283
|
+
children: "4. Third Party Content and Links"
|
|
284
|
+
}), jsx("p", {
|
|
285
|
+
className: "mb-4 text-sm text-muted-foreground",
|
|
286
|
+
children: "This Policy does not apply to the practices of third parties that we do not own or control, including any third-party websites and services that may be linked to or from the Platform. The Platform may interact with websites at your direction, and those websites are governed by their own privacy policies and terms of service. We encourage you to review the privacy policies of any websites you interact with through the Platform."
|
|
287
|
+
}), jsx("p", {
|
|
288
|
+
className: "text-sm text-muted-foreground",
|
|
289
|
+
children: "The Chrome extension accesses the following first-party domains for authentication and configuration purposes only: *.yantra.app, *.cdebase.dev, *.cdebase.io, and dev-cdebase.auth0.com."
|
|
290
|
+
})]
|
|
291
|
+
}), jsxs("section", {
|
|
292
|
+
id: "audience",
|
|
293
|
+
className: "mb-10",
|
|
294
|
+
children: [jsx("h2", {
|
|
295
|
+
className: "mb-4 text-2xl font-semibold text-foreground",
|
|
296
|
+
children: "5. General Audience Platform"
|
|
297
|
+
}), jsx("p", {
|
|
298
|
+
className: "text-sm text-muted-foreground",
|
|
299
|
+
children: "The Platform is not intended for individuals younger than the age of eighteen (18), and we request that these individuals do not use the Platform. We do not knowingly collect information from individuals younger than eighteen (18)."
|
|
300
|
+
})]
|
|
301
|
+
}), jsxs("section", {
|
|
302
|
+
id: "security",
|
|
303
|
+
className: "mb-10",
|
|
304
|
+
children: [jsx("h2", {
|
|
305
|
+
className: "mb-4 text-2xl font-semibold text-foreground",
|
|
306
|
+
children: "6. How We Handle Data Security"
|
|
307
|
+
}), jsx("p", {
|
|
308
|
+
className: "mb-4 text-sm text-muted-foreground",
|
|
309
|
+
children: "We use commercially reasonable security measures to protect against loss, misuse, and alteration of your personal information under our control, including:"
|
|
310
|
+
}), jsxs("ul", {
|
|
311
|
+
className: "mb-4 list-inside list-disc space-y-2 text-sm text-muted-foreground",
|
|
312
|
+
children: [jsxs("li", {
|
|
313
|
+
children: [jsx("strong", {
|
|
314
|
+
className: "text-foreground",
|
|
315
|
+
children: "Encrypted Connections:"
|
|
316
|
+
}), " All communication between the Platform and our backend services uses secure WebSocket (WSS) and HTTPS connections."]
|
|
317
|
+
}), jsxs("li", {
|
|
318
|
+
children: [jsx("strong", {
|
|
319
|
+
className: "text-foreground",
|
|
320
|
+
children: "Token-Based Authentication:"
|
|
321
|
+
}), " Authentication tokens are derived using HMAC-SHA256 and are scoped to specific sessions."]
|
|
322
|
+
}), jsxs("li", {
|
|
323
|
+
children: [jsx("strong", {
|
|
324
|
+
className: "text-foreground",
|
|
325
|
+
children: "Local Storage Isolation:"
|
|
326
|
+
}), " Configuration and session data stored in your browser uses Chrome's built-in storage APIs, which are isolated per-extension."]
|
|
327
|
+
}), jsxs("li", {
|
|
328
|
+
children: [jsx("strong", {
|
|
329
|
+
className: "text-foreground",
|
|
330
|
+
children: "No Persistent Server Storage of Page Content:"
|
|
331
|
+
}), ' ', "Page content, screenshots, and DOM data transmitted during automation sessions are processed in real-time and are not permanently stored on our servers after the automation task is completed."]
|
|
332
|
+
}), jsxs("li", {
|
|
333
|
+
children: [jsx("strong", {
|
|
334
|
+
className: "text-foreground",
|
|
335
|
+
children: "Access Controls:"
|
|
336
|
+
}), " Strict access controls and authentication requirements for all backend services."]
|
|
337
|
+
})]
|
|
338
|
+
}), jsx("p", {
|
|
339
|
+
className: "text-sm text-muted-foreground",
|
|
340
|
+
children: "However, no system can be 100% secure. While we strive to safeguard your personal information, we cannot guarantee or warrant the security of any information you disclose or transmit to us. You use the Platform and provide us with information at your own initiative and risk."
|
|
341
|
+
})]
|
|
342
|
+
}), jsxs("section", {
|
|
343
|
+
id: "choices",
|
|
344
|
+
className: "mb-10",
|
|
345
|
+
children: [jsx("h2", {
|
|
346
|
+
className: "mb-4 text-2xl font-semibold text-foreground",
|
|
347
|
+
children: "7. Your Choices About the Information We Collect"
|
|
348
|
+
}), jsx("h3", {
|
|
349
|
+
className: "mb-2 mt-4 text-lg font-medium text-foreground",
|
|
350
|
+
children: "Extension Controls"
|
|
351
|
+
}), jsx("p", {
|
|
352
|
+
className: "mb-4 text-sm text-muted-foreground",
|
|
353
|
+
children: "You can disconnect the Chrome extension from the relay server at any time using the popup interface. You can detach individual tabs from automation. When disconnected, no page content or tab data is transmitted to our servers."
|
|
354
|
+
}), jsx("h3", {
|
|
355
|
+
className: "mb-2 mt-4 text-lg font-medium text-foreground",
|
|
356
|
+
children: "Uninstall"
|
|
357
|
+
}), jsx("p", {
|
|
358
|
+
className: "mb-4 text-sm text-muted-foreground",
|
|
359
|
+
children: "You may uninstall the Chrome extension at any time through Chrome's extension management page. Uninstalling removes all locally stored data, including configuration settings, session state, and authentication tokens."
|
|
360
|
+
}), jsx("h3", {
|
|
361
|
+
className: "mb-2 mt-4 text-lg font-medium text-foreground",
|
|
362
|
+
children: "Clear Data"
|
|
363
|
+
}), jsx("p", {
|
|
364
|
+
className: "mb-4 text-sm text-muted-foreground",
|
|
365
|
+
children: "You can reset the extension's configuration to defaults using the \"Reset to Defaults\" button on the options page, which clears all stored configuration and authentication data."
|
|
366
|
+
}), jsx("h3", {
|
|
367
|
+
className: "mb-2 mt-4 text-lg font-medium text-foreground",
|
|
368
|
+
children: "Account Deletion"
|
|
369
|
+
}), jsxs("p", {
|
|
370
|
+
className: "text-sm text-muted-foreground",
|
|
371
|
+
children: ["You may request deletion of your Yantra account and associated data by contacting us at", ' ', jsx("a", {
|
|
372
|
+
href: "mailto:support@yantra.app",
|
|
373
|
+
className: "text-primary underline",
|
|
374
|
+
children: "support@yantra.app"
|
|
375
|
+
}), "."]
|
|
376
|
+
})]
|
|
377
|
+
}), jsxs("section", {
|
|
378
|
+
id: "transfer",
|
|
379
|
+
className: "mb-10",
|
|
380
|
+
children: [jsx("h2", {
|
|
381
|
+
className: "mb-4 text-2xl font-semibold text-foreground",
|
|
382
|
+
children: "8. Consent to International Transfer of Your Information"
|
|
383
|
+
}), jsx("p", {
|
|
384
|
+
className: "text-sm text-muted-foreground",
|
|
385
|
+
children: "We are a US-based company. If you are located outside of the United States, please be aware that the information that we collect from you will be transferred to, and stored at, a destination outside of your country. By using the Platform or providing us with any information, you fully understand and unambiguously consent to this transfer to, and processing, usage, sharing, and storage of your information in the United States and other jurisdictions, which may have different or less protective privacy laws than those in your country."
|
|
386
|
+
})]
|
|
387
|
+
}), jsxs("section", {
|
|
388
|
+
id: "changes",
|
|
389
|
+
className: "mb-10",
|
|
390
|
+
children: [jsx("h2", {
|
|
391
|
+
className: "mb-4 text-2xl font-semibold text-foreground",
|
|
392
|
+
children: "9. Changes to This Privacy Policy"
|
|
393
|
+
}), jsx("p", {
|
|
394
|
+
className: "text-sm text-muted-foreground",
|
|
395
|
+
children: "To the extent allowed by applicable law, we reserve the right to change this Policy at any time without prior notice. If we make material changes to this Policy, we will revise the \"Updated and Effective\" date at the top of this Policy. We may also provide notice through the Platform or via the Chrome Web Store listing. Your continued use of the Platform following these changes constitutes acceptance of the revised Policy."
|
|
396
|
+
})]
|
|
397
|
+
}), jsxs("section", {
|
|
398
|
+
id: "contact",
|
|
399
|
+
className: "mb-10",
|
|
400
|
+
children: [jsx("h2", {
|
|
401
|
+
className: "mb-4 text-2xl font-semibold text-foreground",
|
|
402
|
+
children: "10. Contact Us"
|
|
403
|
+
}), jsxs("p", {
|
|
404
|
+
className: "text-sm text-muted-foreground",
|
|
405
|
+
children: ["If you have any questions, comments, or concerns regarding our Policy and/or practices, please send an email to:", ' ', jsx("a", {
|
|
406
|
+
href: "mailto:support@yantra.app",
|
|
407
|
+
className: "text-primary underline",
|
|
408
|
+
children: "support@yantra.app"
|
|
409
|
+
})]
|
|
410
|
+
}), jsxs("p", {
|
|
411
|
+
className: "mt-4 text-sm text-muted-foreground",
|
|
412
|
+
children: ["CDEBase, Inc.", jsx("br", {}), "d/b/a Yantra"]
|
|
413
|
+
})]
|
|
414
|
+
}), jsxs("section", {
|
|
415
|
+
id: "california",
|
|
416
|
+
className: "mb-10",
|
|
417
|
+
children: [jsx("h2", {
|
|
418
|
+
className: "mb-4 text-2xl font-semibold text-foreground",
|
|
419
|
+
children: "11. Notice to California Residents"
|
|
420
|
+
}), jsx("p", {
|
|
421
|
+
className: "text-sm text-muted-foreground",
|
|
422
|
+
children: "California Civil Code Section 1798.83 permits residents of California to request certain details about how their personal information has been shared during the calendar year with third parties for those third parties' own direct marketing purposes. We do not share personal information about you with third parties for their own direct marketing purposes."
|
|
423
|
+
}), jsxs("p", {
|
|
424
|
+
className: "mt-4 text-sm text-muted-foreground",
|
|
425
|
+
children: ["If you are a California resident and have questions about our practices, please send your request via email to", ' ', jsx("a", {
|
|
426
|
+
href: "mailto:support@yantra.app",
|
|
427
|
+
className: "text-primary underline",
|
|
428
|
+
children: "support@yantra.app"
|
|
429
|
+
}), ' ', "with \"Your California Privacy Rights\" in the subject field. You must include your name, street address, city, state, and zip code."]
|
|
430
|
+
})]
|
|
431
|
+
}), jsxs("section", {
|
|
432
|
+
id: "nevada",
|
|
433
|
+
className: "mb-10",
|
|
434
|
+
children: [jsx("h2", {
|
|
435
|
+
className: "mb-4 text-2xl font-semibold text-foreground",
|
|
436
|
+
children: "12. Notice to Nevada Residents"
|
|
437
|
+
}), jsxs("p", {
|
|
438
|
+
className: "text-sm text-muted-foreground",
|
|
439
|
+
children: ["Nevada S.B. 220 provides consumers with the ability to opt out of the sale of their personal information. We do not sell your personal information as defined in S.B. 220. However, you may still submit an opt-out request, and if our practices were to change in the future, we would honor your request. If you are a Nevada resident and would like to opt out, please contact us at", ' ', jsx("a", {
|
|
440
|
+
href: "mailto:support@yantra.app",
|
|
441
|
+
className: "text-primary underline",
|
|
442
|
+
children: "support@yantra.app"
|
|
443
|
+
}), "."]
|
|
55
444
|
})]
|
|
56
445
|
})]
|
|
57
446
|
})
|
|
58
447
|
})]
|
|
59
448
|
});
|
|
60
|
-
}
|
|
449
|
+
}export{PrivacyPage as default};//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/pages/Privacy/index.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/pages/Privacy/index.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":"2IAIA,SAAS,WAAW,GAAA;SACTA;AAicX,IAAC,SAAA,EAAA,4BAAA;AAED,IAAA,QAAA,EAAA,CAAeC,YAAY,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/lib/routes.json
CHANGED
|
@@ -169,5 +169,27 @@
|
|
|
169
169
|
"componentPath": "@adminide-stack/yantra-help-browser/lib/pages/StatusPage/index.js",
|
|
170
170
|
"hasComponent": true
|
|
171
171
|
}
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
"//blog": {
|
|
175
|
+
"path": "//blog",
|
|
176
|
+
"key": "blog",
|
|
177
|
+
"exact": true,
|
|
178
|
+
"hideInMenu": true,
|
|
179
|
+
"position": "MIDDLE",
|
|
180
|
+
"componentPath": "@adminide-stack/yantra-help-browser/lib/pages/Blog/index.js",
|
|
181
|
+
"hasComponent": true
|
|
182
|
+
}
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"//blog/:slug": {
|
|
186
|
+
"path": "//blog/:slug",
|
|
187
|
+
"key": "blog-post",
|
|
188
|
+
"exact": true,
|
|
189
|
+
"hideInMenu": true,
|
|
190
|
+
"position": "MIDDLE",
|
|
191
|
+
"componentPath": "@adminide-stack/yantra-help-browser/lib/pages/BlogPost/index.js",
|
|
192
|
+
"hasComponent": true
|
|
193
|
+
}
|
|
172
194
|
}
|
|
173
195
|
]
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 'How Yantra Browser Automates Your Web Workflows'
|
|
3
|
+
description: 'A deep dive into the technical architecture behind Yantra Browser — how CDP relay, service workers, and cloud AI work together to automate the web.'
|
|
4
|
+
author: 'Yantra Team'
|
|
5
|
+
date: '2025-03-21'
|
|
6
|
+
category: 'Engineering'
|
|
7
|
+
tags: ['browser-extension', 'cdp', 'architecture', 'engineering', 'automation']
|
|
8
|
+
coverImage: '/static/img/blog/yantra-browser-architecture.png'
|
|
9
|
+
readTime: '8 min read'
|
|
10
|
+
slug: 'how-yantra-browser-automates-workflows'
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# How Yantra Browser Automates Your Web Workflows
|
|
14
|
+
|
|
15
|
+
Behind every seamless automation in Yantra Browser lies a carefully designed architecture that bridges your local Chrome browser with cloud-based AI intelligence. In this post, we take you behind the scenes to explain how it all works.
|
|
16
|
+
|
|
17
|
+
## The Relay Architecture
|
|
18
|
+
|
|
19
|
+
Yantra Browser uses a **relay architecture** — a pattern where the Chrome extension acts as a secure bridge between your browser tabs and the Yantra cloud platform.
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
┌─────────────────┐ ┌──────────────┐ ┌─────────────────┐
|
|
23
|
+
│ Your Browser │◄─────►│ Relay │◄─────►│ Yantra Cloud │
|
|
24
|
+
│ (Chrome + Ext) │ CDP │ (Service │ WSS │ (AI Assistant) │
|
|
25
|
+
│ │ │ Worker) │ │ │
|
|
26
|
+
└─────────────────┘ └──────────────┘ └─────────────────┘
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### How It Flows
|
|
30
|
+
|
|
31
|
+
1. **You give an instruction** — "Find the cheapest flight from SFO to JFK next weekend" in the Yantra chat.
|
|
32
|
+
2. **Cloud AI plans the steps** — The AI breaks down the task into discrete actions: open a travel site, enter search criteria, compare results.
|
|
33
|
+
3. **Commands relay to your browser** — Each action (navigate, click, type, extract) is sent via secure WebSocket to the extension's service worker.
|
|
34
|
+
4. **Your browser executes locally** — The service worker uses CDP to interact with your actual browser tabs — clicking buttons, reading page content, and navigating links.
|
|
35
|
+
5. **Results flow back** — Extracted data and page state are relayed back to the cloud AI, which decides the next step or presents results to you.
|
|
36
|
+
|
|
37
|
+
## Chrome DevTools Protocol (CDP) In Action
|
|
38
|
+
|
|
39
|
+
The extension leverages specific CDP domains for different types of automation:
|
|
40
|
+
|
|
41
|
+
### Page Navigation and Interaction
|
|
42
|
+
|
|
43
|
+
Using `Page` and `DOM` domains, the extension can navigate to URLs, wait for page loads, find elements by selector, and simulate clicks and keyboard input — all through the same APIs that Chrome DevTools uses internally.
|
|
44
|
+
|
|
45
|
+
### Network Monitoring
|
|
46
|
+
|
|
47
|
+
The `Network` domain allows the extension to observe API calls made by web applications. This is invaluable for understanding what data a page fetches, intercepting responses for extraction, and detecting when a page has fully loaded.
|
|
48
|
+
|
|
49
|
+
### JavaScript Evaluation
|
|
50
|
+
|
|
51
|
+
The `Runtime` domain enables safe execution of JavaScript expressions within page contexts. This powers everything from reading form values to triggering complex UI interactions that require programmatic access.
|
|
52
|
+
|
|
53
|
+
### Screenshot and Visual Analysis
|
|
54
|
+
|
|
55
|
+
The `Page.captureScreenshot` capability lets the AI "see" what's on screen, enabling visual analysis for tasks like verifying a form was submitted correctly or identifying UI elements that aren't easily addressable by selectors alone.
|
|
56
|
+
|
|
57
|
+
## The Service Worker: Always Ready
|
|
58
|
+
|
|
59
|
+
Yantra Browser's service worker is the heart of the extension. Built on Chrome's Manifest V3 architecture, it:
|
|
60
|
+
|
|
61
|
+
- **Maintains persistent WebSocket connections** to the Yantra relay server
|
|
62
|
+
- **Manages CDP sessions** across multiple browser tabs
|
|
63
|
+
- **Handles authentication** via secure token exchange
|
|
64
|
+
- **Queues commands** when the browser is briefly unavailable
|
|
65
|
+
- **Auto-reconnects** after network interruptions with exponential backoff
|
|
66
|
+
|
|
67
|
+
The service worker lifecycle is carefully managed to stay within Chrome's resource guidelines while remaining responsive to incoming automation commands.
|
|
68
|
+
|
|
69
|
+
## Security at Every Layer
|
|
70
|
+
|
|
71
|
+
### Encrypted Communication
|
|
72
|
+
|
|
73
|
+
All data between the extension and Yantra's servers travels over TLS-encrypted WebSocket connections. There is no plaintext communication at any point.
|
|
74
|
+
|
|
75
|
+
### Minimal Permission Scope
|
|
76
|
+
|
|
77
|
+
The extension requests only the permissions it needs:
|
|
78
|
+
|
|
79
|
+
- `debugger` — For CDP access to automate browser tabs
|
|
80
|
+
- `activeTab` — To interact with the currently focused tab
|
|
81
|
+
- `storage` — To persist authentication tokens locally
|
|
82
|
+
- `identity` — For secure OAuth sign-in
|
|
83
|
+
|
|
84
|
+
Host permissions are scoped to Yantra's own domains by default. The extension cannot access arbitrary websites unless you explicitly grant permission through the automation flow.
|
|
85
|
+
|
|
86
|
+
### No Remote Code Execution
|
|
87
|
+
|
|
88
|
+
The extension bundles all its code at install time. No external scripts are fetched or evaluated at runtime. This is enforced by Chrome's Manifest V3 Content Security Policy and verified during Chrome Web Store review.
|
|
89
|
+
|
|
90
|
+
## Real-World Performance
|
|
91
|
+
|
|
92
|
+
In our internal benchmarks, Yantra Browser automation achieves:
|
|
93
|
+
|
|
94
|
+
| Metric | Performance |
|
|
95
|
+
| --------------------------- | ------------------------------------------ |
|
|
96
|
+
| **Command Latency** | < 100ms round-trip for typical actions |
|
|
97
|
+
| **Page Load Detection** | Accurate within 200ms of visual completion |
|
|
98
|
+
| **Multi-tab Orchestration** | Up to 10 concurrent tab automations |
|
|
99
|
+
| **Reconnection Time** | < 2 seconds after network interruption |
|
|
100
|
+
|
|
101
|
+
These numbers mean that automation feels nearly as fast as a human clicking through pages manually — but with perfect consistency and zero fatigue.
|
|
102
|
+
|
|
103
|
+
## What's Next
|
|
104
|
+
|
|
105
|
+
We're actively working on expanding Yantra Browser's capabilities:
|
|
106
|
+
|
|
107
|
+
- **Visual Understanding** — AI-powered screen analysis for complex UIs without clean DOM structure
|
|
108
|
+
- **Workflow Templates** — Pre-built automation recipes for common tasks (expense reports, data migration, content publishing)
|
|
109
|
+
- **Team Collaboration** — Share automation workflows across your organization with role-based access control
|
|
110
|
+
- **Custom Actions API** — Let developers extend the extension with domain-specific automation modules
|
|
111
|
+
|
|
112
|
+
## Try It Today
|
|
113
|
+
|
|
114
|
+
Yantra Browser is available now on the Chrome Web Store. Install it, connect your Yantra account, and start automating in under a minute.
|
|
115
|
+
|
|
116
|
+
[Get Yantra Browser →](https://chromewebstore.google.com/detail/yantra-browser)
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
_Want to dive deeper? Check out our [How the Extension Works](/help-center/browser-extension/how-it-works) documentation or reach out to our engineering team at [support@yantra.app](mailto:support@yantra.app)._
|