Skip to content

Commit 9a88a62

Browse files
committed
Merge branch 'production' into kian/PCX-16500
2 parents 92eaf2a + 86427fa commit 9a88a62

File tree

90 files changed

+2703
-671
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

90 files changed

+2703
-671
lines changed

.github/CODEOWNERS

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
# AI
2020

21-
/src/content/docs/agents/ @irvinebroque @rita3ko @elithrar @thomasgauvin @threepointone @harshil1712 @cloudflare/pcx-technical-writing
21+
/src/content/docs/agents/ @irvinebroque @rita3ko @elithrar @thomasgauvin @threepointone @cloudflare/pcx-technical-writing
2222
/src/content/docs/ai-gateway/ @kathayl @G4brym @mchenco @daisyfaithauma @cloudflare/pcx-technical-writing
2323
/src/content/docs/workers-ai/ @rita3ko @craigsdennis @markdembo @mchenco @daisyfaithauma @cloudflare/pcx-technical-writing
2424
/src/content/docs/vectorize/ @elithrar @vy-ton @sejoker @mchenco @cloudflare/pcx-technical-writing
@@ -93,10 +93,10 @@
9393
/src/content/docs/calls/ @cloudflare/pcx-technical-writing @cloudflare/calls
9494
/src/assets/images/calls/ @cloudflare/pcx-technical-writing @cloudflare/calls
9595
/public/calls/ @cloudflare/pcx-technical-writing @cloudflare/calls
96-
/src/content/docs/d1/ @elithrar @rozenmd @vy-ton @joshthoward @oxyjun @cloudflare/pcx-technical-writing
96+
/src/content/docs/d1/ @elithrar @rozenmd @vy-ton @joshthoward @oxyjun @harshil1712 @cloudflare/pcx-technical-writing
9797
/src/content/release-notes/d1.yaml @elithrar @rozenmd @vy-ton @joshthoward @oxyjun @cloudflare/pcx-technical-writing
98-
/src/content/partials/d1/ @elithrar @rozenmd @vy-ton @joshthoward @oxyjun @cloudflare/pcx-technical-writing
99-
/src/content/docs/durable-objects/ @elithrar @vy-ton @joshthoward @oxyjun @cloudflare/pcx-technical-writing
98+
/src/content/partials/d1/ @elithrar @rozenmd @vy-ton @joshthoward @oxyjun @harshil1712 @cloudflare/pcx-technical-writing
99+
/src/content/docs/durable-objects/ @elithrar @vy-ton @joshthoward @oxyjun @harshil1712 @cloudflare/pcx-technical-writing
100100
/src/content/release-notes/durable-objects.yaml @elithrar @rozenmd @vy-ton @joshthoward @oxyjun @cloudflare/pcx-technical-writing
101101
/src/content/docs/email-routing/ @cloudflare/pcx-technical-writing
102102
/src/content/docs/hyperdrive/ @elithrar @thomasgauvin @sejoker @oxyjun @cloudflare/pcx-technical-writing
@@ -111,9 +111,9 @@
111111
/src/content/release-notes/kv.yaml @elithrar @thomasgauvin @rts-rob @oxyjun @cloudflare/pcx-technical-writing
112112
/src/content/partials/kv/ @elithrar @thomasgauvin @rts-rob @oxyjun @cloudflare/pcx-technical-writing
113113
/src/content/docs/pub-sub/ @elithrar @dcpena @cloudflare/pcx-technical-writing
114-
/src/content/docs/queues/ @elithrar @toddmantell @maheshwarip @cloudflare/pcx-technical-writing
114+
/src/content/docs/queues/ @elithrar @toddmantell @maheshwarip @harshil1712 @cloudflare/pcx-technical-writing
115115
/src/content/release-notes/queues.yaml @elithrar @toddmantell @maheshwarip @cloudflare/pcx-technical-writing
116-
/src/content/docs/r2/ @oxyjun @elithrar @jonesphillip @cloudflare/workers-docs @cloudflare/pcx-technical-writing
116+
/src/content/docs/r2/ @oxyjun @elithrar @jonesphillip @harshil1712 @cloudflare/workers-docs @cloudflare/pcx-technical-writing
117117
/src/content/release-notes/r2.yaml @oxyjun @elithrar @cloudflare/workers-docs @cloudflare/pcx-technical-writing
118118
/src/content/docs/stream/ @tsmith512 @dcpena @cloudflare/pcx-technical-writing @renandincer @third774
119119
/src/content/release-notes/stream.yaml @tsmith512 @dcpena @cloudflare/pcx-technical-writing
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
---
2+
title: Markdown conversion in Workers AI
3+
description: You can now convert documents in multiple formats to Markdown using the toMarkdown utility method in Workers AI.
4+
date: 2025-03-20T18:00:00Z
5+
---
6+
7+
Document conversion plays an important role when designing and developing AI applications and agents. Workers AI now provides the `toMarkdown` utility method that developers can use to for quick, easy, and convenient conversion and summary of documents in multiple formats to Markdown language.
8+
9+
You can call this new tool using a binding by calling `env.AI.toMarkdown()` or the using the [REST API](/api/resources/ai/) endpoint.
10+
11+
In this example, we fetch a PDF document and an image from R2 and feed them both to `env.AI.toMarkdown()`. The result is a list of converted documents. Workers AI models are used automatically to detect and summarize the image.
12+
13+
```typescript
14+
import { Env } from "./env";
15+
16+
export default {
17+
async fetch(request: Request, env: Env, ctx: ExecutionContext) {
18+
19+
// https://pub-979cb28270cc461d94bc8a169d8f389d.r2.dev/somatosensory.pdf
20+
const pdf = await env.R2.get('somatosensory.pdf');
21+
22+
// https://pub-979cb28270cc461d94bc8a169d8f389d.r2.dev/cat.jpeg
23+
const cat = await env.R2.get('cat.jpeg');
24+
25+
return Response.json(
26+
await env.AI.toMarkdown([
27+
{
28+
name: "somatosensory.pdf",
29+
blob: new Blob([await pdf.arrayBuffer()], { type: "application/octet-stream" }),
30+
},
31+
{
32+
name: "cat.jpeg",
33+
blob: new Blob([await cat.arrayBuffer()], { type: "application/octet-stream" }),
34+
},
35+
]),
36+
);
37+
},
38+
};
39+
```
40+
41+
This is the result:
42+
43+
```json
44+
[
45+
{
46+
"name": "somatosensory.pdf",
47+
"mimeType": "application/pdf",
48+
"format": "markdown",
49+
"tokens": 0,
50+
"data": "# somatosensory.pdf\n## Metadata\n- PDFFormatVersion=1.4\n- IsLinearized=false\n- IsAcroFormPresent=false\n- IsXFAPresent=false\n- IsCollectionPresent=false\n- IsSignaturesPresent=false\n- Producer=Prince 20150210 (www.princexml.com)\n- Title=Anatomy of the Somatosensory System\n\n## Contents\n### Page 1\nThis is a sample document to showcase..."
51+
},
52+
{
53+
"name": "cat.jpeg",
54+
"mimeType": "image/jpeg",
55+
"format": "markdown",
56+
"tokens": 0,
57+
"data": "The image is a close-up photograph of Grumpy Cat, a cat with a distinctive grumpy expression and piercing blue eyes. The cat has a brown face with a white stripe down its nose, and its ears are pointed upright. Its fur is light brown and darker around the face, with a pink nose and mouth. The cat's eyes are blue and slanted downward, giving it a perpetually grumpy appearance. The background is blurred, but it appears to be a dark brown color. Overall, the image is a humorous and iconic representation of the popular internet meme character, Grumpy Cat. The cat's facial expression and posture convey a sense of displeasure or annoyance, making it a relatable and entertaining image for many people."
58+
}
59+
]
60+
```
61+
62+
See [Markdown Conversion](/workers-ai/markdown-conversion/) for more information on supported formats, REST API and pricing.

src/content/docs/cloudflare-one/applications/configure-apps/saas-apps/generic-oidc-saas.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ Some SaaS applications provide the Redirect URL after you [configure the SSO pro
5353
| Key endpoint | Returns the current public keys used to [verify the Access JWT](/cloudflare-one/identity/authorization-cookie/validating-json/) <br/> `https://<your-team-name>.cloudflareaccess.com/cdn-cgi/access/sso/oidc/<client-id>/jwks` |
5454
| User info endpoint | Returns all user claims in JSON format <br/> `https://<your-team-name>.cloudflareaccess.com/cdn-cgi/access/sso/oidc/<client-id>/userinfo` |
5555

56-
11. Add [Access policies](/cloudflare-one/policies/access/) to control who can connect to your application. All Access applications are deny by default -- a user must match an Allow policy before they are granted access.
56+
11. <Render file="access/add-access-policies" product="cloudflare-one" />
5757

5858
12. <Render file="access/access-choose-idps" product="cloudflare-one" />
5959

src/content/docs/cloudflare-one/applications/configure-apps/saas-apps/generic-saml-saas.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ Obtain the following URLs from your SaaS application account:
4848
If you are using Okta, Microsoft Entra ID (formerly Azure AD), Google Workspace, or GitHub as your IdP, Access will automatically send a SAML attribute titled `groups` with all of the user's associated groups as attribute values.
4949
:::
5050

51-
11. Add [Access policies](/cloudflare-one/policies/access/) to control who can connect to your application. All Access applications are deny by default -- a user must match an Allow policy before they are granted access.
51+
11. <Render file="access/add-access-policies" product="cloudflare-one" />
5252

5353
12. <Render file="access/access-choose-idps" product="cloudflare-one" />
5454

src/content/docs/cloudflare-one/applications/configure-apps/self-hosted-public-app.mdx

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ You can securely publish internal tools and applications by adding Cloudflare Ac
1717

1818
## 1. Add your application to Access
1919

20-
<Render file="access/self-hosted-app" />
20+
<Render file="access/self-hosted-app/generic-public-app" />
2121

2222
## 2. Connect your origin to Cloudflare
2323

@@ -37,12 +37,4 @@ Users can now connect to your self-hosted application after authenticating with
3737

3838
## Product compatibility
3939

40-
When using Access self-hosted applications, the majority of Cloudflare products will be compatible with your application.
41-
42-
However, the following products are not supported:
43-
44-
* [Automatic Signed Exchanges](/speed/optimization/other/signed-exchanges/)
45-
* [Automatic Platform Optimization](/automatic-platform-optimization)
46-
* [Zaraz](/zaraz)
47-
48-
You can disable Automatic Signed Exchanges and Zaraz for a specific application - instead of across your entire zone - using a [Configuration Rule](/rules/configuration-rules/) scoped to the application domain.
40+
<Render file="access/self-hosted-app/product-compatibility" product="cloudflare-one" />

src/content/docs/cloudflare-one/applications/non-http/browser-rendering.mdx

Lines changed: 31 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,34 +5,44 @@ sidebar:
55
order: 3
66
---
77

8-
Cloudflare can render certain non-web applications in your browser without the need for client software or end-user configuration changes. Cloudflare currently supports rendering a terminal for SSH and VNC connections in a user's browser.
8+
import { Render } from "~/components";
99

10-
:::note
11-
You can only enable browser rendering on domains and subdomains, not for specific paths.
12-
:::
10+
Cloudflare can render SSH, VNC, and RDP applications in a browser without the need for client software or end-user configuration changes. For SSH and VNC, user email prefixes must match their username on the server. RDP leverages your existing Windows usernames and passwords for authenticating to the Windows server; Cloudflare does not manage any credentials on the Windows server.
1311

14-
## Enable browser rendering
12+
## Limitations
1513

16-
To enable browser rendering:
14+
- Browser rendering is only supported for [self-hosted public applications](/cloudflare-one/applications/configure-apps/self-hosted-public-app/), not private IPs or hostnames.
15+
- You can only render a browser-rendered terminal on domains and subdomains, not on specific paths.
16+
- <Render file="access/self-hosted-app/ssh-sessions" />
17+
- Cloudflare uses TLS to secure the egress RDP connection to your Windows server. We do not currently validate the chain of trust.
1718

18-
1. In [Zero Trust](https://one.dash.cloudflare.com), go to **Access** > **Applications**.
19-
2. Locate the SSH or VNC application you created when [connecting the server to Cloudflare](/cloudflare-one/connections/connect-networks/use-cases/ssh/). Select **Configure**.
20-
3. In the **Policies** tab, ensure that only **Allow** or **Block** policies are present. **Bypass** and **Service Auth** are not supported for browser-rendered applications.
21-
4. Go to **Advanced settings** > **Browser rendering settings**.
22-
5. For **Browser rendering**, choose _SSH_ or _VNC_.
19+
## Turn on browser rendering
2320

24-
:::note
21+
### SSH and VNC
2522

26-
When connecting over SSH, Cloudflare supports following key exchange algorithms:
27-
28-
29-
- `curve25519-sha256`
30-
- `ecdh-sha2-nistp256`
31-
- `ecdh-sha2-nistp384`
32-
- `ecdh-sha2-nistp521`
33-
34-
:::
23+
To turn on browser rendering for an SSH or VNC application:
3524

25+
1. In [Zero Trust](https://one.dash.cloudflare.com), go to **Access** > **Applications**.
26+
2. Locate the SSH or VNC application you created when [connecting the server to Cloudflare](/cloudflare-one/connections/connect-networks/use-cases/ssh/). Select **Configure**.
27+
3. In the **Policies** tab, ensure that only **Allow** or **Block** policies are present. **Bypass** and **Service Auth** are not supported for browser-rendered applications.
28+
4. Go to **Advanced settings** > **Browser rendering settings**.
29+
5. For **Browser rendering**, choose _SSH_ or _VNC_.
3630
6. Select **Save application**.
3731

3832
When users authenticate and visit the URL of the application, Cloudflare will render a terminal in their browser.
33+
34+
### RDP
35+
36+
To set up browser-rendering for RDP, refer to our [browser-based RDP guide](/cloudflare-one/connections/connect-networks/use-cases/rdp/rdp-browser/).
37+
38+
### SSH key exchange algorithms
39+
40+
Cloudflare's browser-rendered SSH terminal supports the following Key Exchange (KEX) algorithms:
41+
42+
43+
- `curve25519-sha256`
44+
- `ecdh-sha2-nistp256`
45+
- `ecdh-sha2-nistp384`
46+
- `ecdh-sha2-nistp521`
47+
48+
For browser-rendered SSH connections to work, you may need to update the `sshd_config` file on your server to accept these algorithms.

src/content/docs/cloudflare-one/applications/non-http/index.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,11 @@ If you would like to define how users access specific infrastructure servers wit
2323

2424
## Clientless access
2525

26-
Clientless access methods are suited for organizations that cannot deploy the WARP client or need to support third-party contractors where installing a client is not possible. Clientless access requires onboarding a domain to Cloudflare and configuring a public hostname in order to make the server reachable. Command logging is not supported, and user email prefixes must match their username on the server.
26+
Clientless access methods are suited for organizations that cannot deploy the WARP client or need to support third-party contractors where installing a client is not possible. Clientless access requires onboarding a domain to Cloudflare and configuring a public hostname in order to make the server reachable. Command logging is not supported.
2727

2828
### Browser-rendered terminal
2929

30-
Cloudflare's [browser-based terminal](/cloudflare-one/applications/non-http/browser-rendering/) allows users to connect over SSH and VNC without any configuration. When users visit the public hostname URL (for example, `https://ssh.example.com`) and log in with their Access credentials, Cloudflare will render a terminal in their browser.
30+
Cloudflare's [browser-based terminal](/cloudflare-one/applications/non-http/browser-rendering/) allows users to connect over SSH, RDP, and VNC without any configuration. When users visit the public hostname URL (for example, `https://ssh.example.com`) and log in with their Access credentials, Cloudflare will render a terminal in their browser. For RDP connections, users must authenticate to the Windows server using their Windows username and password in addition to being authenticated by Cloudflare Access.
3131

3232
### Client-side cloudflared (legacy)
3333

src/content/docs/cloudflare-one/applications/non-http/infrastructure-apps.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ Access for Infrastructure currently only supports [SSH](/cloudflare-one/connecti
4040

4141
## 1. Add a target
4242

43-
<Render file="access/add-target" />
43+
<Render file="access/add-target" params={{ protocol: "generic" }}/>
4444

4545
## 2. Add an infrastructure application
4646

src/content/docs/cloudflare-one/applications/non-http/self-hosted-private-app.mdx

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -22,25 +22,15 @@ This feature replaces the legacy [private network app type](/cloudflare-one/appl
2222

2323
## Add your application to Access
2424

25-
1. In [Zero Trust](https://one.dash.cloudflare.com), go to **Access** > **Applications**.
26-
27-
2. Select **Add an application**.
28-
29-
3. Select **Self-hosted**.
30-
31-
4. Enter any name for the application.
32-
33-
5. In **Session Duration**, choose how often the user's [application token](/cloudflare-one/identity/authorization-cookie/application-token/) should expire.
34-
35-
Cloudflare checks every HTTPS request to your application for a valid application token. If the user's application token (and global token) has expired, they will be prompted to reauthenticate with the IdP. For more information, refer to [Session management](/cloudflare-one/identity/users/session-management/). If the application is non-HTTPS or you do not have TLS decryption turned on, the session is tracked by the WARP client per application.
25+
<Render file="access/self-hosted-app/create-app" product="cloudflare-one" params={{ private: true }}/>
3626

3727
6. Add the private IP and/or private hostname that represents the application. You can use [wildcards](/cloudflare-one/policies/access/app-paths/) with private hostnames to protect multiple parts of an application that share a root path.
3828

3929
:::note
4030
Private hostnames are currently only available over port `443` over HTTPS and the application must have a valid Server Name Indicator (SNI).
4131
:::
4232

43-
7. Add [Access policies](/cloudflare-one/policies/access/) to control who can connect to your application. All Access applications are deny by default -- a user must match an Allow policy before they are granted access.
33+
7. <Render file="access/add-access-policies" product="cloudflare-one" />
4434

4535
8. Configure how users will authenticate:
4636

@@ -58,14 +48,9 @@ This feature replaces the legacy [private network app type](/cloudflare-one/appl
5848

5949
12. Select **Next**.
6050

61-
13. (Optional) Configure advanced settings. These settings only apply to private hostnames and require [Gateway TLS decryption](/cloudflare-one/policies/gateway/http-policies/tls-decryption/).
51+
13. <Render file="access/self-hosted-app/advanced-settings" product="cloudflare-one" />
6252

63-
- [**Cross-Origin Resource Sharing (CORS) settings**](/cloudflare-one/identity/authorization-cookie/cors/)
64-
- [**Cookie settings**](/cloudflare-one/identity/authorization-cookie/#cookie-settings)
65-
- **Browser rendering settings**:
66-
- [Automatic `cloudflared` authentication](/cloudflare-one/applications/non-http/cloudflared-authentication/automatic-cloudflared-authentication/)
67-
- [Browser rendering for SSH and VNC](/cloudflare-one/applications/non-http/browser-rendering/)
68-
- **401 Response for Service Auth policies**: Return a `401` response code when a user (or machine) makes a request to the application without the correct [service token](/cloudflare-one/identity/service-tokens/).
53+
These settings only apply to private hostnames and require [Gateway TLS decryption](/cloudflare-one/policies/gateway/http-policies/tls-decryption/).
6954

7055
14. Select **Save**.
7156

src/content/docs/cloudflare-one/connections/connect-devices/agentless/index.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ If you are unable to install the WARP client on your devices (for example, Windo
99

1010
- **[Gateway DNS policies](/cloudflare-one/connections/connect-devices/agentless/dns/)**
1111
- **[Gateway HTTP policies](/cloudflare-one/connections/connect-devices/agentless/pac-files/)** without user identity and device posture
12-
- **[Access policies](/cloudflare-one/policies/access/)** without device posture for [web applications](/cloudflare-one/applications/configure-apps/) and [browser-rendered](/cloudflare-one/applications/non-http/browser-rendering/) SSH and VNC connections
12+
- **[Access policies](/cloudflare-one/policies/access/)** without device posture for [web applications](/cloudflare-one/applications/configure-apps/) and for [browser-rendered](/cloudflare-one/applications/non-http/browser-rendering/) SSH, RDP, and VNC connections
1313
- **[Remote Browser Isolation](/cloudflare-one/policies/browser-isolation/)** via an [Access policy](/cloudflare-one/policies/access/isolate-application/), [prefixed URLs](/cloudflare-one/policies/browser-isolation/setup/clientless-browser-isolation/), or a [non-identity on-ramp](/cloudflare-one/policies/browser-isolation/setup/non-identity/)
1414
- **[Cloud Access Security Broker (CASB)](/cloudflare-one/applications/casb/)**
1515
- **[Data Loss Prevention (DLP)](/cloudflare-one/applications/casb/casb-dlp/)** for SaaS applications integrated with Cloudflare CASB

0 commit comments

Comments
 (0)