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
Copy file name to clipboardExpand all lines: docs/build/devices/application-features/data-discovery-at-1-0.md
+6-6Lines changed: 6 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
3
3
## Overview
4
4
5
-
The [`~query@1.0`](./source-code/dev_query.md) device provides flexible search capabilities over cached messages in HyperBEAM. It enables efficient data discovery through multiple matching strategies and return formats, making it the central hub for searching and retrieving messages stored in the node's cache.
5
+
The [`~query@1.0`](../source-code/dev_query.md) device provides flexible search capabilities over cached messages in HyperBEAM. It enables efficient data discovery through multiple matching strategies and return formats, making it the central hub for searching and retrieving messages stored in the node's cache.
6
6
7
7
## Core Concept: Message Discovery
8
8
@@ -145,9 +145,9 @@ Applications built on query device respond instantly even offline. Once data rep
145
145
146
146
## See Also
147
147
148
-
-[`~cache@1.0`](./source-code/dev_cache.md) - Primary data source for query operations
Copy file name to clipboardExpand all lines: docs/build/devices/application-features/data-replication-at-1-0.md
+5-5Lines changed: 5 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
3
3
## Overview
4
4
5
-
The [`~copycat@1.0`](./source-code/dev_copycat.md) device replicates data from external sources into HyperBEAM node caches. It fetches messages from GraphQL endpoints and Arweave nodes, enabling offline-first applications through local data caching.
5
+
The [`~copycat@1.0`](../source-code/dev_copycat.md) device replicates data from external sources into HyperBEAM node caches. It fetches messages from GraphQL endpoints and Arweave nodes, enabling offline-first applications through local data caching.
6
6
7
7
## Core Concept: Data Ingestion
8
8
@@ -124,8 +124,8 @@ Applications using copycat load faster and work offline. Once data replicates to
124
124
125
125
## See Also
126
126
127
-
-[`~query@1.0`](./source-code/dev_query.md) - For querying replicated data
128
-
-[`~cache@1.0`](./source-code/dev_cache.md) - Storage target for replicated data
129
-
-[`~arweave@2.9-pre`](./source-code/dev_arweave.md) - Arweave node communication
127
+
-[`~query@1.0`](../source-code/dev_query.md) - For querying replicated data
128
+
-[`~cache@1.0`](../source-code/dev_cache.md) - Storage target for replicated data
129
+
-[`~arweave@2.9-pre`](../source-code/dev_arweave.md) - Arweave node communication
Copy file name to clipboardExpand all lines: docs/build/devices/building-devices.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,9 +4,9 @@ We encourage you to extend HyperBEAM with devices for functionality that is gene
4
4
5
5
## What are Devices?
6
6
7
-
As explained in the [introduction](./devices/hyperbeam-devices.md), devices are the core functional units within HyperBEAM. They are self-contained modules that process messages and perform specific actions, forming the building blocks of your application's logic.
7
+
As explained in the [introduction](./hyperbeam-devices.md), devices are the core functional units within HyperBEAM. They are self-contained modules that process messages and perform specific actions, forming the building blocks of your application's logic.
8
8
9
-
HyperBEAM comes with a set of powerful [built-in devices](./devices/hyperbeam-devices.md) that handle everything from process management (`~process@1.0`) and message scheduling (`~scheduler@1.0`) to executing WebAssembly (`~wasm64@1.0`) and Lua scripts (`~lua@5.3a`).
9
+
HyperBEAM comes with a set of powerful [built-in devices](./hyperbeam-devices.md) that handle everything from process management (`~process@1.0`) and message scheduling (`~scheduler@1.0`) to executing WebAssembly (`~wasm64@1.0`) and Lua scripts (`~lua@5.3a`).
Copy file name to clipboardExpand all lines: docs/build/devices/foundational/json-at-1-0.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
3
3
## Overview
4
4
5
-
The [`~json@1.0`](./source-code/dev_json_iface.md) device provides a mechanism to interact with JSON (JavaScript Object Notation) data structures. It allows treating a JSON document or string as a stateful entity against which queries can be executed.
5
+
The [`~json@1.0`](../source-code/dev_json_iface.md) device provides a mechanism to interact with JSON (JavaScript Object Notation) data structures. It allows treating a JSON document or string as a stateful entity against which queries can be executed.
6
6
7
7
This device is useful for:
8
8
@@ -36,7 +36,7 @@ This retrieves the node configuration from the meta device and serializes it to
36
36
37
37
## See Also
38
38
39
-
-[Message Device](./source-code/dev_message.md) - Works well with JSON serialization
40
-
-[Meta Device](./source-code/dev_meta.md) - Can provide configuration data to serialize
39
+
-[Message Device](../source-code/dev_message.md) - Works well with JSON serialization
40
+
-[Meta Device](../source-code/dev_meta.md) - Can provide configuration data to serialize
Copy file name to clipboardExpand all lines: docs/build/devices/foundational/lua-at-5-3a.md
+7-7Lines changed: 7 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,18 +2,18 @@
2
2
3
3
## Overview
4
4
5
-
The [`~lua@5.3a`](./source-code/dev_lua.md) device enables the execution of Lua scripts within the HyperBEAM environment. It provides an isolated sandbox where Lua code can process incoming messages, interact with other devices, and manage state.
5
+
The [`~lua@5.3a`](../source-code/dev_lua.md) device enables the execution of Lua scripts within the HyperBEAM environment. It provides an isolated sandbox where Lua code can process incoming messages, interact with other devices, and manage state.
6
6
7
7
## Core Concept: Lua Script Execution
8
8
9
-
This device allows processes to perform computations defined in Lua scripts. Similar to the [`~wasm64@1.0`](./source-code/dev_wasm.md) device, it manages the lifecycle of a Lua execution state associated with the process.
9
+
This device allows processes to perform computations defined in Lua scripts. Similar to the [`~wasm64@1.0`](../source-code/dev_wasm.md) device, it manages the lifecycle of a Lua execution state associated with the process.
10
10
11
11
## Key Functions (Keys)
12
12
13
-
These keys are typically used within an execution stack (managed by [`dev_stack`](./source-code/dev_stack.md)) for an AO process.
13
+
These keys are typically used within an execution stack (managed by [`dev_stack`](../source-code/dev_stack.md)) for an AO process.
14
14
15
15
***`init`**
16
-
***Action:** Initializes the Lua environment for the process. It finds and loads the Lua script(s) associated with the process, creates a `luerl` state, applies sandboxing rules if specified, installs the [`dev_lua_lib`](./source-code/dev_lua_lib.md) (providing AO-specific functions like `ao.send`), and stores the initialized state in the process's private area (`priv/state`).
16
+
***Action:** Initializes the Lua environment for the process. It finds and loads the Lua script(s) associated with the process, creates a `luerl` state, applies sandboxing rules if specified, installs the [`dev_lua_lib`](../source-code/dev_lua_lib.md) (providing AO-specific functions like `ao.send`), and stores the initialized state in the process's private area (`priv/state`).
17
17
***Inputs (Expected in Process Definition or `init` Message):**
18
18
*`script`: Can be:
19
19
* An Arweave Transaction ID of the Lua script file.
@@ -48,14 +48,14 @@ The `sandbox` option in the process definition restricts potentially harmful Lua
48
48
49
49
## AO Library (`dev_lua_lib`)
50
50
51
-
The `init` function automatically installs a helper library ([`dev_lua_lib`](./source-code/dev_lua_lib.md)) into the Lua state. This library typically provides functions for interacting with the AO environment from within the Lua script, such as:
51
+
The `init` function automatically installs a helper library ([`dev_lua_lib`](../source-code/dev_lua_lib.md)) into the Lua state. This library typically provides functions for interacting with the AO environment from within the Lua script, such as:
52
52
53
53
*`ao.send({ Target = ..., ... })`: To send messages from the process.
54
54
* Access to message tags and data.
55
55
56
56
## Usage within `dev_stack`
57
57
58
-
Like [`~wasm64@1.0`](./source-code/dev_wasm.md), the `~lua@5.3a` device is typically used within an execution stack.
58
+
Like [`~wasm64@1.0`](../source-code/dev_wasm.md), the `~lua@5.3a` device is typically used within an execution stack.
59
59
60
60
```text
61
61
# Example Process Definition Snippet
@@ -67,4 +67,4 @@ Sandbox: true
67
67
68
68
This device offers a lightweight, integrated scripting capability for AO processes, suitable for a wide range of tasks from simple logic to more complex state management and interactions.
Copy file name to clipboardExpand all lines: docs/build/devices/foundational/message-at-1-0.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,14 +2,14 @@
2
2
3
3
## Overview
4
4
5
-
The [`~message@1.0`](./source-code/dev_message.md) device is a fundamental built-in device in HyperBEAM. It serves as the identity device for standard AO-Core messages, which are represented as Erlang maps internally. Its primary function is to allow manipulation and inspection of these message maps directly via HTTP requests, without needing a persistent process state.
5
+
The [`~message@1.0`](../source-code/dev_message.md) device is a fundamental built-in device in HyperBEAM. It serves as the identity device for standard AO-Core messages, which are represented as Erlang maps internally. Its primary function is to allow manipulation and inspection of these message maps directly via HTTP requests, without needing a persistent process state.
6
6
7
7
This device is particularly useful for:
8
8
9
9
* Creating and modifying transient messages on the fly using query parameters.
10
10
* Retrieving specific values from a message map.
11
11
* Inspecting the keys of a message.
12
-
* Handling message commitments and verification (though often delegated to specialized commitment devices like [`httpsig@1.0`](./source-code/dev_codec_httpsig.md)).
12
+
* Handling message commitments and verification (though often delegated to specialized commitment devices like [`httpsig@1.0`](../source-code/dev_codec_httpsig.md)).
13
13
14
14
## Core Functionality
15
15
@@ -44,7 +44,7 @@ The `message@1.0` device reserves several keys for specific operations:
44
44
***`remove`**: Removes one or more specified keys from the message. Requires an `item` or `items` parameter.
45
45
***`keys`**: Returns a list of all public (non-private) keys present in the message map.
46
46
***`id`**: Calculates and returns the ID (hash) of the message. Considers active commitments based on specified `committers`. May delegate ID calculation to a device specified by the message's `id-device` key
47
-
***`commit`**: Creates a commitment (e.g., a signature) for the message. Requires parameters like `commitment-device` and potentially committer information. Delegates the actual commitment generation to the specified device (default [`httpsig@1.0`](./source-code/dev_codec_httpsig.md)).
47
+
***`commit`**: Creates a commitment (e.g., a signature) for the message. Requires parameters like `commitment-device` and potentially committer information. Delegates the actual commitment generation to the specified device (default [`httpsig@1.0`](../source-code/dev_codec_httpsig.md)).
48
48
***`committers`**: Returns a list of committers associated with the commitments in the message. Can be filtered by request parameters.
49
49
***`commitments`**: Used internally and in requests to filter or specify which commitments to operate on (e.g., for `id` or `verify`).
50
50
***`verify`**: Verifies the commitments attached to the message. Can be filtered by `committers` or specific `commitment` IDs in the request. Delegates verification to the device specified in each commitment (`commitment-device`).
@@ -71,4 +71,4 @@ GET /~message@1.0&hello=world&k=v/k
Copy file name to clipboardExpand all lines: docs/build/devices/foundational/meta-at-1-0.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
3
3
## Overview
4
4
5
-
The [`~meta@1.0`](./source-code/dev_meta.md) device provides access to metadata and configuration information about the local HyperBEAM node and the broader AO network.
5
+
The [`~meta@1.0`](../source-code/dev_meta.md) device provides access to metadata and configuration information about the local HyperBEAM node and the broader AO network.
6
6
7
7
This device is essential for:
8
8
@@ -30,7 +30,7 @@ While the `info` key is the primary interaction point, the `NodeMsg` managed by
30
30
*`operator`: The address designated as the node operator (defaults to the address derived from `priv_wallet`).
31
31
*`initialized`: Status indicating if the node setup is temporary or permanent.
32
32
*`preprocessor` / `postprocessor`: Optional messages defining pre/post-processing logic for requests.
33
-
*`routes`: Routing table used by [`dev_router`](./source-code/dev_router.md).
33
+
*`routes`: Routing table used by [`dev_router`](../source-code/dev_router.md).
34
34
*`store`: Configuration for data storage.
35
35
*`trace`: Debug tracing options.
36
36
*`p4_*`: Payment configuration.
@@ -40,7 +40,7 @@ While the `info` key is the primary interaction point, the `NodeMsg` managed by
40
40
41
41
## Utility Functions (Internal/Module Level)
42
42
43
-
The [`dev_meta.erl`](./source-code/dev_meta.md) module also contains helper functions used internally or callable from other Erlang modules:
43
+
The [`dev_meta.erl`](../source-code/dev_meta.md) module also contains helper functions used internally or callable from other Erlang modules:
44
44
45
45
*`is_operator(<RequestMsg>, <NodeMsg>) -> boolean()`: Checks if the signer of `RequestMsg` matches the configured `operator` in `NodeMsg`.
46
46
@@ -52,4 +52,4 @@ The `~meta` device applies the node's configured `preprocessor` message before r
52
52
53
53
Before a node can process general requests, it usually needs to be initialized. Attempts to access devices other than `~meta@1.0/info` before initialization typically result in an error. Initialization often involves setting essential parameters like the operator key via a `POST` to `info`.
Copy file name to clipboardExpand all lines: docs/build/devices/foundational/process-at-1-0.md
+7-7Lines changed: 7 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,15 +2,15 @@
2
2
3
3
## Overview
4
4
5
-
The [`~process@1.0`](./source-code/dev_process.md) device represents a persistent, shared execution environment within HyperBEAM, analogous to a process or actor in other systems. It allows for stateful computation and interaction over time.
5
+
The [`~process@1.0`](../source-code/dev_process.md) device represents a persistent, shared execution environment within HyperBEAM, analogous to a process or actor in other systems. It allows for stateful computation and interaction over time.
6
6
7
7
## Core Concept: Orchestration
8
8
9
9
A message tagged with `Device: process@1.0` (the "Process Definition Message") doesn't typically perform computation itself. Instead, it defines *which other devices* should be used for key aspects of its lifecycle:
10
10
11
-
***Scheduler Device:** Determines the order of incoming messages (assignments) to be processed. (Defaults to [`~scheduler@1.0`](./source-code/dev_scheduler.md)).
12
-
***Execution Device:** Executes the actual computation based on the current state and the scheduled message. Often configured as [`dev_stack`](./source-code/dev_stack.md) to allow multiple computational steps (e.g., running WASM, applying cron jobs, handling proofs).
13
-
***Push Device:** Handles the injection of new messages into the process's schedule. (Defaults to [`~push@1.0`](./source-code/dev_push.md)).
11
+
***Scheduler Device:** Determines the order of incoming messages (assignments) to be processed. (Defaults to [`~scheduler@1.0`](../source-code/dev_scheduler.md)).
12
+
***Execution Device:** Executes the actual computation based on the current state and the scheduled message. Often configured as [`dev_stack`](../source-code/dev_stack.md) to allow multiple computational steps (e.g., running WASM, applying cron jobs, handling proofs).
13
+
***Push Device:** Handles the injection of new messages into the process's schedule. (Defaults to [`~push@1.0`](../source-code/dev_push.md)).
14
14
15
15
The `~process@1.0` device acts as a router, intercepting requests and delegating them to the appropriate configured device (scheduler, executor, etc.) by temporarily swapping the device tag on the message before resolving.
16
16
@@ -28,7 +28,7 @@ These keys are accessed via an HTTP path relative to the Process Definition Mess
***Action:** Computes the process state up to a specific point identified by `<TargetSlotOrMsgID>` (either a slot number or a message ID within the schedule). It retrieves assignments from the Scheduler Device and applies them sequentially using the configured Execution Device.
30
30
***Response:** The process state message after executing up to the target slot/message.
31
-
***Caching:** Results are cached aggressively (see [`dev_process_cache`](./source-code/dev_process_cache.md)) to avoid recomputation.
31
+
***Caching:** Results are cached aggressively (see [`dev_process_cache`](../source-code/dev_process_cache.md)) to avoid recomputation.
32
32
***`GET /<ProcessID>~process@1.0/now`**
33
33
***Action:** Computes and returns the `Results` key from the *latest* known state of the process. This typically involves computing all pending assignments.
34
34
***Response:** The value of the `Results` key from the final state.
@@ -63,10 +63,10 @@ This defines a process that uses:
63
63
64
64
## State Management & Caching
65
65
66
-
`~process@1.0` relies heavily on caching ([`dev_process_cache`](./source-code/dev_process_cache.md)) to optimize performance. Full state snapshots and intermediate results are cached periodically (configurable via `Cache-Frequency` and `Cache-Keys` options) to avoid recomputing the entire history for every request.
66
+
`~process@1.0` relies heavily on caching ([`dev_process_cache`](../source-code/dev_process_cache.md)) to optimize performance. Full state snapshots and intermediate results are cached periodically (configurable via `Cache-Frequency` and `Cache-Keys` options) to avoid recomputing the entire history for every request.
67
67
68
68
## Initialization (`init`)
69
69
70
70
Processes often require an initialization step before they can process messages. This is typically triggered by calling the `init` key on the configured Execution Device via the process path (`/<ProcessID>~process@1.0/init`). This allows components within the execution stack (like WASM modules) to set up their initial state.
0 commit comments