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/plugins/a11y.md
+43-7Lines changed: 43 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,7 +6,7 @@ outline: deep
6
6
7
7
An accessibility inspector that runs [axe-core](https://github.com/dequelabs/axe-core) against a host application, lists the WCAG A/AA violations in a **Solid** panel, and highlights the offending element in the page when you hover a warning.
Outside a hub, one `<script type="module">` for the same bundle boots the agent standalone — the scan loop is identical, with the feed mirror simply absent.
36
36
37
+
## Standalone
38
+
39
+
```sh
40
+
pnpx @devframes/plugin-a11y
41
+
```
42
+
43
+
Runs the panel alone, without a host page to scan — serves at `/__devframes_plugin_a11y/` even standalone, so the mount path matches the hosted case. Useful for a quick look at the panel UI; pair it with a manually-loaded agent script to drive it against a real page.
All functions are namespaced `devframes:plugin:a11y:*`:
74
+
75
+
| Function | Type | Returns |
76
+
|----------|------|---------|
77
+
|`get-config`|`static`| The impact taxonomy (with developer-facing copy) and the `BroadcastChannel` coordinates the panel uses to find its injected agent. |
78
+
37
79
## Run the demo
38
80
39
81
The Accessibility Inspector lives in the repository as a reference plugin. Its demo serves an intentionally-broken host page and the panel from one origin so they share the channel:
@@ -47,12 +89,6 @@ pnpm -C plugins/a11y demo:build # static: baked RPC dump, no server
47
89
48
90
Open the printed URL, then hover any row in the panel — the matching element in the page gets a focus ring and scrolls into view if it is off-screen. Both demo modes behave identically; the panel's `websocket` / `static` tag is the only tell.
> Queries are eval-grade access to registered objects: jora can invoke any function reachable as an own property and fires own getters. Register live objects with that in mind, and keep inspector endpoints on loopback.
72
72
73
+
## Standalone
74
+
75
+
```sh
76
+
pnpx @devframes/plugin-data-inspector # the example source
77
+
pnpx @devframes/plugin-data-inspector stats.json log.jsonl # one static source per data file
pnpx @devframes/plugin-data-inspector attach # attach to a process running the agent
80
+
```
81
+
82
+
`.json` files parse whole; `.jsonl` / `.ndjson` parse as an array of records. `build` writes a static site embedding the dataset — the same query engine runs client-side there, so saved recipes keep working.
devframe-data-inspector attach # attach to a process running the agent
108
-
```
114
+
`createDataInspectorDevframe(options)` returns a definition you can deploy through any adapter:
109
115
110
-
`.json` files parse whole; `.jsonl` / `.ndjson` parse as an array of records. `build` writes a static site embedding the dataset — the same query engine runs client-side there, so saved recipes keep working.
Then query `store`, `cache`, or `keys($)` to see what's there. The source reads `globalThis` at query time, so assignments made after the agent started show up on the next run. Opt out with `DEVFRAME_DATA_INSPECTOR_GLOBAL=0`.
141
153
142
-
The agent binds `127.0.0.1`, requires devframe's trust handshake with a per-run pre-shared token, and advertises its endpoint in `node_modules/.data-inspector/agent.json` — `devframe-data-inspector attach` consumes it automatically (or pass `ws://…` and `--token` explicitly). Queries execute inside the target process, where the live objects are. Treat the endpoint like a debugger port.
154
+
The agent binds `127.0.0.1`, requires devframe's trust handshake with a per-run pre-shared token, and advertises its endpoint in `node_modules/.data-inspector/agent.json` — `pnpx @devframes/plugin-data-inspector attach` consumes it automatically (or pass `ws://…` and `--token` explicitly). Queries execute inside the target process, where the live objects are. Treat the endpoint like a debugger port.
143
155
144
156
## RPC surface
145
157
@@ -153,3 +165,7 @@ All functions are namespaced `devframes:plugin:data-inspector:*`:
153
165
|`skeleton`|`query`| The type skeleton of a source, honoring the filter options. |
154
166
|`suggest`|`query`| Autocomplete candidates from jora's stat mode at a cursor position. |
155
167
|`saved:list` / `saved:save` / `saved:delete`|`query` / `action`| Saved-query recipes in the `workspace` and `project` scopes. |
Copy file name to clipboardExpand all lines: docs/plugins/index.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
@@ -26,12 +26,12 @@ This is the framework-agnostic promise in practice. The browser bundle is the au
26
26
27
27
## Running a plugin
28
28
29
-
Most plugins publish a `bin`, so the quickest path is `npx`:
29
+
Most plugins publish a `bin`, so the quickest path is `pnpx`:
30
30
31
31
```sh
32
-
npx @devframes/plugin-inspect # the Devframe Inspector, standalone
33
-
npx @devframes/plugin-og # inspect Open Graph metadata and social cards
34
-
npx @devframes/plugin-git # the Git dashboard against the current repo
32
+
pnpx @devframes/plugin-inspect # the Devframe Inspector, standalone
33
+
pnpx @devframes/plugin-og # inspect Open Graph metadata and social cards
34
+
pnpx @devframes/plugin-git # the Git dashboard against the current repo
35
35
```
36
36
37
37
Each also exports a `create…Devframe` factory (or, for the Accessibility Inspector, a ready-made definition) you can drive through any adapter — see the individual pages for the factory name, options, and host-mount snippets.
Copy file name to clipboardExpand all lines: docs/plugins/inspect.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -20,7 +20,7 @@ The three introspection `query` functions are agent-exposed and bake into the st
20
20
## Standalone
21
21
22
22
```sh
23
-
npx @devframes/plugin-inspect
23
+
pnpx @devframes/plugin-inspect
24
24
```
25
25
26
26
Opens the inspector against a fresh standalone devframe connection — handy as a reference and for poking at the introspection RPCs themselves. The CLI prints the URL it serves on.
Enter any HTTP or HTTPS page reachable from the devframe process. The viewer resolves relative image and icon URLs against the fetched document, renders the resulting social cards for Twitter, Facebook, LinkedIn, and Telegram, and identifies missing metadata with a ready-to-use Nuxt `useSeoMeta()` snippet.
14
+
15
+
The standalone server requires devframe's trust handshake by default because it can request developer-supplied URLs. Set `auth: false` only for an isolated local environment.
16
+
17
+
## Standalone
10
18
11
19
```sh
12
-
npx @devframes/plugin-og
20
+
pnpx @devframes/plugin-og
13
21
```
14
22
15
-
Enter any HTTP or HTTPS page reachable from the devframe process. The viewer resolves relative image and icon URLs against the fetched document and identifies missing metadata with a ready-to-use Nuxt `useSeoMeta()` snippet.
`defaultUrl` supplies the initial target and makes `devframe build` bake that page into the static RPC dump. The resulting report keeps its assets relative and runs from any deployment path.
28
50
29
-
The standalone server requires devframe's trust handshake by default because it can request developer-supplied URLs. Set `auth: false` only for an isolated local environment.
51
+
## RPC surface
52
+
53
+
All functions are namespaced `devframes:plugin:og:*`:
54
+
55
+
| Function | Type | Returns |
56
+
|----------|------|---------|
57
+
|`resolve-metadata`|`query`| Fetches an HTTP or HTTPS page and returns its normalized title, language, Open Graph, Twitter, and link metadata. |
It works whether the panel is already open (it reacts to the `devframe:docks:active` shared-state slot) or mounts in response to the switch (it reads the slot on start and converges). Focus is one-shot: an unknown or not-yet-arrived session id waits for that session to appear, and the user's own tab clicks are always honored afterward. A session id that never appears is a no-op — the default selection (most-recent session) stands.
74
74
75
+
## RPC surface
76
+
77
+
All functions are namespaced `devframes:plugin:terminals:*`:
78
+
79
+
| Function | Type | Purpose |
80
+
|----------|------|---------|
81
+
|`list`|`query` (snapshot) | The current sessions with their status, mode, and command. |
82
+
|`presets`|`query` (snapshot) | The declared launcher presets. |
83
+
|`spawn`|`action`| Start a new session from a preset id, or a command + mode. Interactive sessions accept input; readonly sessions only stream output. |
84
+
|`write`|`action`| Send input to an interactive session. |
85
+
|`resize`|`action`| Resize a session's PTY to the given columns and rows. |
86
+
|`restart`|`action`| Restart a session's process, keeping its id and scrollback. |
87
+
|`rename`|`action`| Rename a session. |
88
+
|`terminate`|`action`| End a session's running process; keeps the session and its scrollback. |
89
+
|`remove`|`action`| Kill a session and discard it (process, stream, and scrollback). |
90
+
|`clear-exited`|`action`| Discard every stopped session at once; running sessions are left untouched. |
91
+
92
+
Status (and every mutation above) is mirrored into shared state, so every connected panel stays in sync.
0 commit comments