diff --git a/docs/build/getting-started/hyperbeam-capabilities.md b/docs/build/getting-started/hyperbeam-capabilities.md index 0448fce93..a68c6031c 100644 --- a/docs/build/getting-started/hyperbeam-capabilities.md +++ b/docs/build/getting-started/hyperbeam-capabilities.md @@ -8,7 +8,7 @@ Designed to be **modular**, **composable**, and **extensible**, HyperBEAM lets y While [AO-Core](../introduction/what-is-ao-core.html) establishes the foundational concepts of Messages, Devices, and Paths, building on HyperBEAM can be simplified to four key principles: -1. **Everything is a [message](../introduction/what-is-hyperbeam.html#messages-modular-data-packets).** You can compute on any message by calling its keys by name. The [`device`](./devices/hyperbeam-devices.md) specified in the message determines how these keys are resolved. The default device, `message@1.0`, resolves keys to their literal values within the message. +1. **Everything is a [message](../introduction/what-is-hyperbeam.html#messages-modular-data-packets).** You can compute on any message by calling its keys by name. The [`device`](../devices/hyperbeam-devices.md) specified in the message determines how these keys are resolved. The default device, `message@1.0`, resolves keys to their literal values within the message. 2. **[Paths](./pathing-in-hyperbeam.md) are pipelines of messages.** A path defines a sequence of 'request' messages to be executed. You can set a key in a message directly within the path using the `&key=value` syntax. Headers and parameters added after a `?` are applied to all messages in the pipeline. @@ -57,7 +57,7 @@ You can build and deploy your own devices in Erlang to introduce entirely new, h **Use Case:** You could build a custom device that acts as a bridge to another blockchain's API, allowing your AO processes to interact with external systems seamlessly. -> Learn how to [Build Your Own Device](../build/devices/building-devices.html). +> Learn how to [Build Your Own Device](../devices/building-devices.md). #### Achieve Raw Performance with Native Code For the most demanding, performance-critical tasks, you can write Native Implemented Functions (NIFs) in low-level languages like C or Rust. These NIFs integrate directly with the Erlang VM, offering the highest possible performance. diff --git a/docs/build/getting-started/pathing-in-hyperbeam.md b/docs/build/getting-started/pathing-in-hyperbeam.md index d14ae581b..c85dd4ccb 100644 --- a/docs/build/getting-started/pathing-in-hyperbeam.md +++ b/docs/build/getting-started/pathing-in-hyperbeam.md @@ -21,7 +21,7 @@ The HTTP response from this node includes a signature from the host's key. By ac Every path in AO-Core represents a program. Think of the URL bar as a Unix-style command-line interface, providing access to AO's trustless and verifiable compute. Each path component (between `/` characters) represents a step in the computation. In this example, we instruct the AO-Core node to: 1. Load a specific message from its caches (local, another node, or Arweave) -2. Interpret it with the [`~process@1.0`](../build/devices/foundational/process-at-1-0.md) device +2. Interpret it with the [`~process@1.0`](../devices/foundational/process-at-1-0.md) device 3. The process device implements a shared computing environment with consistent state between users ### State Access (`/now` or `/compute`) @@ -53,7 +53,7 @@ This shows the 'cache' of your process. Each response is: Beyond path segments, HyperBEAM URLs can include query parameters that utilize a special type casting syntax. This allows specifying the desired data type for a parameter directly within the URL using the format `key+type=value`. - **Syntax**: A `+` symbol separates the parameter key from its intended type (e.g., `count+integer=42`, `items+list="apple",7`). -- **Mechanism**: The HyperBEAM node identifies the `+type` suffix (e.g., `+integer`, `+list`, `+map`, `+float`, `+atom`, `+resolve`). It then uses internal functions ([`hb_singleton:maybe_typed`](../devices/source-code/hb_singleton.md) and [`dev_codec_structured:decode_value`](../build/source-code/dev_codec_structured.md)) to decode and cast the provided value string into the corresponding Erlang data type before incorporating it into the message. +- **Mechanism**: The HyperBEAM node identifies the `+type` suffix (e.g., `+integer`, `+list`, `+map`, `+float`, `+atom`, `+resolve`). It then uses internal functions ([`hb_singleton:maybe_typed`](../devices/source-code/hb_singleton.md) and [`dev_codec_structured:decode_value`](../devices/source-code/dev_codec_structured.md)) to decode and cast the provided value string into the corresponding Erlang data type before incorporating it into the message. - **Supported Types**: Common types include `integer`, `float`, `list`, `map`, `atom`, `binary` (often implicit), and `resolve` (for path resolution). List values often follow the [HTTP Structured Fields format (RFC 8941)](https://www.rfc-editor.org/info/rfc8941). This powerful feature enables the expression of complex data structures directly in URLs. @@ -64,13 +64,13 @@ The following examples illustrate using HTTP paths with various AO-Core processe ### Example 1: Accessing Full Process State -To get the complete, real-time state of a process identified by ``, use the `/now` path component with the [`~process@1.0`](https://hyperbeam.arweave.net/build/devices/foundational/process-at-1-0.html) device: +To get the complete, real-time state of a process identified by ``, use the `/now` path component with the [`~process@1.0`](../devices/foundational/process-at-1-0.md) device: ```bash GET /~process@1.0/now ``` -This instructs the AO-Core node to load the process and execute the `now` function on the [`~process@1.0`](https://hyperbeam.arweave.net/build/devices/foundational/process-at-1-0.html) device. +This instructs the AO-Core node to load the process and execute the `now` function on the [`~process@1.0`](../devices/foundational/process-at-1-0.md) device. ### Example 2: Navigating to Specific Process Data