You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 8fd0e22
Browse filesBrowse the repository at this point in the historyBrowse files
For the purposes of this project, we consider Cloudflare publishing its platform in two different forms: in TypeScript declarations for the code that runs inside a Worker, and in an OpenAPI document for the API that provisions and deploys it. FSharp.CloudEdge is F# generated from both, so a Cloudflare application can be written in one language from its request handlers to its deployment.
15
+
FSharp.CloudEdge brings F# to Cloudflare's application and AI platform: stateful agents, model inference, data and search, sandboxes and containers, and the APIs that provision and manage those resources.
16
+
17
+
The opportunity is in composing those capabilities. Give an agent tools through MCP, connect it to data in D1 and R2 or search in Vectorize, and run its tasks in a Sandbox. Use Containers for services that need their own runtime, and Git and Artifacts for versioned work. These capabilities sit alongside queues, workflows, real-time coordination, analytics and the wider control plane.
14
18
15
-
On the Worker side, F# code compiles to JavaScript with [Fable](https://fable.io) and imports the npm packages a TypeScript Worker imports, under the names Cloudflare's documentation uses. On the account side, generated .NET clients call Cloudflare's REST API directly. A Worker upload through those clients includes the Worker's bindings in the JSON metadata that Cloudflare documents, so the Worker's configuration can be F# code kept in the same repository as the Worker.
19
+
Runtime code compiles from F# to JavaScript with [Fable](https://fable.io), using Cloudflare's SDKs and native bindings. Generated .NET clients handle the REST API, so application logic, resource provisioning and deployment can share a language. The bindings follow pinned TypeScript declarations and OpenAPI contracts; generator provenance and compatibility checks are documented below.
16
20
17
-
A new Cloudflare release takes a pin change and a regeneration, reviewed against a contract baseline.
21
+
The **0.1.0** release is a foundation for community testing, especially across the expanding agent and compute APIs. Help [verify real workflows](https://fsprojects.github.io/FSharp.CloudEdge/guide/verify-bindings/), contribute examples, and [report binding issues](https://github.com/fsprojects/FSharp.CloudEdge/issues) so the implementation matures through use.
22
+
23
+
[Explore the platform guides](https://fsprojects.github.io/FSharp.CloudEdge/libraries/) · [Browse the 47 NuGet packages](https://www.nuget.org/packages?q=FSharp.CloudEdge) · [Get started](https://fsprojects.github.io/FSharp.CloudEdge/guide/packages/)
18
24
19
25
## Upstream Foundations
20
26
@@ -33,14 +39,14 @@ flowchart LR
33
39
34
40
[Xantham](https://github.com/shayanhabibi/Xantham) is the TypeScript-to-F# bindings generator by Shayan Habibi and contributors. It runs the TypeScript 7 compiler as an API server (`tsc --api`) and loads the declaration files Cloudflare publishes in its npm packages through that compiler. The root npm manifest pins the compiler build, `typescript``7.1.0-dev.20260902.1`. Xantham assigns each generated symbol one of the four grades below and lists every widened or escaped symbol in a manifest beside the generated source.
35
41
36
-
| Grade | Xantham's definition | Occurrences at acceptance |
37
-
| --- | --- | ---: |
38
-
| Exact | The F# type accepts and rejects exactly what TypeScript does. | 1,444 |
39
-
| Ergonomic | Meaning preserved, spelling made idiomatic. | 3,366 |
40
-
| Widened | Information TypeScript had was dropped. | 3,713 |
41
-
| Escape | The construct is not represented. | 790 |
42
+
| Grade | Xantham's definition |
43
+
| --- | --- |
44
+
| Exact | The F# type accepts and rejects exactly what TypeScript does. |
45
+
| Ergonomic | Meaning preserved, spelling made idiomatic. |
46
+
| Widened | Information TypeScript had was dropped. |
47
+
| Escape | The construct is not represented. |
42
48
43
-
The counts come from the September 13, 2026 acceptance audit and include repeated dependencies across targets. For this library, Xantham generated the 31 runtime libraries from 112 selected npm entry points, together with the three AI SDK contract libraries they share. The pinned build is `xantham``0.1.0-local.8e4c7b11b0ac90236c25`, packed from Xantham commit [`c7e2fa0`](https://github.com/shayanhabibi/Xantham/commit/c7e2fa0daa2ed3ec662cd453ae4c287a6a28673b).
49
+
Xantham generates the 31 runtime libraries from 112 selected npm entry points, together with the three AI SDK contract libraries they share. The generator version and build hashes are recorded in [`config/tool-packages.json`](config/tool-packages.json).
44
50
45
51
### Hawaii
46
52
@@ -60,11 +66,13 @@ The 31 runtime libraries bind the Cloudflare SDKs below, and 11 control-plane cl
| Pages | Cloudflare Access, Turnstile and Static Forms plugins |
@@ -153,18 +161,19 @@ npm run build
153
161
npm run test:bridge
154
162
```
155
163
156
-
[`docs/local-tools.md`](docs/local-tools.md) covers the tool bootstrap, and [`docs/sdk-build.md`](docs/sdk-build.md) covers generation, resumable builds and the recorded evidence.
164
+
[`docs/local-tools.md`](docs/local-tools.md) covers the tool bootstrap, and [`docs/sdk-build.md`](docs/sdk-build.md) covers generation, resumable builds and build reports.
157
165
158
-
## Acceptance Evidence
166
+
## Testing
159
167
160
-
The [September 13 acceptance record](docs/SDK-DELIVERY-ACCEPTANCE-20260913.md) documents the accepted delivery. Its evidence comes from local runs:
168
+
The tests cover package consumption, library composition, HTTP contracts and runtime behavior:
161
169
162
-
- The solution builds in Release with every generated library, and [`tests/SDKComposition`](tests/SDKComposition/README.md) compiles cross-library consumers against it.
170
+
- The [site examples](site/examples) compile against NuGet packages through the [release tooling](docs/nuget-release.md).
171
+
-[`tests/SDKComposition`](tests/SDKComposition/README.md) checks that types from different libraries work together.
163
172
-[`tests/HawaiiApi`](tests/HawaiiApi/README.md) runs the Tenancy and Compute clients against a loopback server.
164
-
-[`tests/ByteBridge`](tests/ByteBridge/README.md) runs Fable-compiled Workers body bindings under Node, and its 13 checks pass.
165
-
- The [Durable Object acceptance](docs/DURABLE-OBJECTS-ACCEPTANCE.md)runs a local workerd lifecycle with verified cleanup.
173
+
-[`tests/ByteBridge`](tests/ByteBridge/README.md) runs Fable-compiled Workers body bindings under Node.
174
+
- The [Durable Object testing guide](docs/durable-objects-testing.md)covers storage, alarms, restarts and cleanup.
166
175
167
-
All of these runs are local. The [integration acceptance architecture](docs/INTEGRATION-ACCEPTANCE.md)specifies hosted test families that deploy real resources and confirm their cleanup.
176
+
The [integration testing guide](docs/integration-testing.md)covers fixture setup, execution and cleanup. To contribute a scenario or report a binding problem, start with [Verify bindings](https://fsprojects.github.io/FSharp.CloudEdge/guide/verify-bindings/).
0 commit comments