forge-openclaw-plugin 0.2.61 → 0.2.66
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -5
- package/dist/assets/{board-DThHV1D8.js → board-DFNV9VAZ.js} +1 -1
- package/dist/assets/index-CFZxwOFB.js +90 -0
- package/dist/assets/{index-7gvVCqnV.css → index-lFN9z5op.css} +1 -1
- package/dist/assets/{motion-BtTJtHCw.js → motion-CXdn34ih.js} +1 -1
- package/dist/assets/{table-Bnw6pcwN.js → table-CEq3bTDv.js} +1 -1
- package/dist/assets/{ui-CnVxFkj0.js → ui-g7FaEglG.js} +1 -1
- package/dist/assets/{vendor-BgZ3YrRd.js → vendor-BcOHGipZ.js} +236 -216
- package/dist/companion-iroh/darwin-arm64/forge-companion-iroh +0 -0
- package/dist/companion-iroh/darwin-x64/forge-companion-iroh +0 -0
- package/dist/companion-iroh/linux-x64/forge-companion-iroh +0 -0
- package/dist/companion-iroh-src/Cargo.lock +4559 -0
- package/dist/companion-iroh-src/Cargo.toml +37 -0
- package/dist/companion-iroh-src/src/lib.rs +279 -0
- package/dist/companion-iroh-src/src/main.rs +478 -0
- package/dist/companion-iroh-src/src/protocol.rs +129 -0
- package/dist/index.html +7 -7
- package/dist/server/server/src/app.js +163 -18
- package/dist/server/server/src/discovery-advertiser.js +13 -0
- package/dist/server/server/src/health.js +18 -3
- package/dist/server/server/src/movement.js +16 -1
- package/dist/server/server/src/openapi.js +12 -2
- package/dist/server/server/src/services/companion-iroh.js +425 -0
- package/dist/server/server/src/services/life-force.js +166 -25
- package/dist/server/server/src/web.js +88 -12
- package/openclaw.plugin.json +1 -1
- package/package.json +3 -3
- package/skills/forge-openclaw/SKILL.md +44 -2
- package/skills/forge-openclaw/entity_conversation_playbooks.md +217 -17
- package/skills/forge-openclaw/psyche_entity_playbooks.md +59 -0
- package/dist/assets/index-_Cn6Prym.js +0 -90
package/README.md
CHANGED
|
@@ -2,6 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
`forge-openclaw-plugin` is the OpenClaw bridge for Forge.
|
|
4
4
|
|
|
5
|
+
For normal installs, start with the single-command Forge installer:
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npx forge-memory
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
It installs the Forge UI/runtime first, discovers OpenClaw, Hermes, and Codex in
|
|
12
|
+
the background, lets you choose adapters from a guided checkbox flow, and keeps
|
|
13
|
+
every selected surface pointed at the same real Forge data folder. Use the direct
|
|
14
|
+
OpenClaw commands below only for plugin-specific debugging, source-linking, or
|
|
15
|
+
manual recovery.
|
|
16
|
+
|
|
5
17
|
It gives OpenClaw a clear way to:
|
|
6
18
|
|
|
7
19
|
- start or reach the local Forge runtime
|
|
@@ -26,10 +38,18 @@ For a normal local install, the Forge UI address is usually:
|
|
|
26
38
|
http://127.0.0.1:4317/forge/
|
|
27
39
|
```
|
|
28
40
|
|
|
29
|
-
That `4317` backend URL is the stable entrypoint
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
41
|
+
That `4317` backend URL is the stable entrypoint for normal local plugin installs.
|
|
42
|
+
|
|
43
|
+
Albert's MacBook also has a repo-local development mode used for plugin/dashboard work.
|
|
44
|
+
The restored 6-hour Tailscale automation exposes `/forge` through the `4317` backend as
|
|
45
|
+
`http://127.0.0.1:4317/forge/`, while that backend is started locally with
|
|
46
|
+
`FORGE_OPENCLAW_DEV=1` and proxies the Vite dev server at `127.0.0.1:3027`. A correct
|
|
47
|
+
dev-mode response contains `/forge/@vite/client` and `/forge/src/main.tsx`.
|
|
48
|
+
|
|
49
|
+
That environment flag is only for the repo-local development machine. Normal plugin
|
|
50
|
+
installs on other machines use the packaged runtime by default and should not be forced
|
|
51
|
+
into source-backed dev mode. The restored automation also must not expose `/forge-dev` or
|
|
52
|
+
point `/forge` at bare `http://127.0.0.1:3027`.
|
|
33
53
|
|
|
34
54
|
You can also ask the agent to call the UI entry tool and return the exact current address.
|
|
35
55
|
|
|
@@ -218,7 +238,10 @@ OpenClaw tool coverage for those areas is explicit:
|
|
|
218
238
|
The sports UI route is `/forge/sports`, while the backend overview route remains
|
|
219
239
|
`/api/v1/health/fitness`. Sleep lives at `/forge/sleep` and `/api/v1/health/sleep`.
|
|
220
240
|
|
|
221
|
-
## Install
|
|
241
|
+
## Advanced Install
|
|
242
|
+
|
|
243
|
+
Prefer `npx forge-memory` for normal installs. The direct commands in this
|
|
244
|
+
section are for OpenClaw-specific debugging, source-linking, and recovery.
|
|
222
245
|
|
|
223
246
|
### Published Package
|
|
224
247
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r as c,R as I,a as Ne}from"./vendor-
|
|
1
|
+
import{r as c,R as I,a as Ne}from"./vendor-BcOHGipZ.js";function Mn(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return c.useMemo(()=>r=>{t.forEach(o=>o(r))},t)}const nt=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function we(e){const t=Object.prototype.toString.call(e);return t==="[object Window]"||t==="[object global]"}function mt(e){return"nodeType"in e}function z(e){var t,n;return e?we(e)?e:mt(e)&&(t=(n=e.ownerDocument)==null?void 0:n.defaultView)!=null?t:window:window}function yt(e){const{Document:t}=z(e);return e instanceof t}function Be(e){return we(e)?!1:e instanceof z(e).HTMLElement}function Vt(e){return e instanceof z(e).SVGElement}function xe(e){return e?we(e)?e.document:mt(e)?yt(e)?e:Be(e)||Vt(e)?e.ownerDocument:document:document:document}const V=nt?c.useLayoutEffect:c.useEffect;function rt(e){const t=c.useRef(e);return V(()=>{t.current=e}),c.useCallback(function(){for(var n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return t.current==null?void 0:t.current(...r)},[])}function On(){const e=c.useRef(null),t=c.useCallback((r,o)=>{e.current=setInterval(r,o)},[]),n=c.useCallback(()=>{e.current!==null&&(clearInterval(e.current),e.current=null)},[]);return[t,n]}function Pe(e,t){t===void 0&&(t=[e]);const n=c.useRef(e);return V(()=>{n.current!==e&&(n.current=e)},t),n}function Fe(e,t){const n=c.useRef();return c.useMemo(()=>{const r=e(n.current);return n.current=r,r},[...t])}function Je(e){const t=rt(e),n=c.useRef(null),r=c.useCallback(o=>{o!==n.current&&(t==null||t(o,n.current)),n.current=o},[]);return[n,r]}function _e(e){const t=c.useRef();return c.useEffect(()=>{t.current=e},[e]),t.current}let ut={};function $e(e,t){return c.useMemo(()=>{if(t)return t;const n=ut[e]==null?0:ut[e]+1;return ut[e]=n,e+"-"+n},[e,t])}function qt(e){return function(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];return r.reduce((i,s)=>{const a=Object.entries(s);for(const[l,u]of a){const d=i[l];d!=null&&(i[l]=d+e*u)}return i},{...t})}}const ye=qt(1),Qe=qt(-1);function In(e){return"clientX"in e&&"clientY"in e}function ot(e){if(!e)return!1;const{KeyboardEvent:t}=z(e.target);return t&&e instanceof t}function Nn(e){if(!e)return!1;const{TouchEvent:t}=z(e.target);return t&&e instanceof t}function Ze(e){if(Nn(e)){if(e.touches&&e.touches.length){const{clientX:t,clientY:n}=e.touches[0];return{x:t,y:n}}else if(e.changedTouches&&e.changedTouches.length){const{clientX:t,clientY:n}=e.changedTouches[0];return{x:t,y:n}}}return In(e)?{x:e.clientX,y:e.clientY}:null}const fe=Object.freeze({Translate:{toString(e){if(!e)return;const{x:t,y:n}=e;return"translate3d("+(t?Math.round(t):0)+"px, "+(n?Math.round(n):0)+"px, 0)"}},Scale:{toString(e){if(!e)return;const{scaleX:t,scaleY:n}=e;return"scaleX("+t+") scaleY("+n+")"}},Transform:{toString(e){if(e)return[fe.Translate.toString(e),fe.Scale.toString(e)].join(" ")}},Transition:{toString(e){let{property:t,duration:n,easing:r}=e;return t+" "+n+"ms "+r}}}),kt="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";function Tn(e){return e.matches(kt)?e:e.querySelector(kt)}const Ln={display:"none"};function kn(e){let{id:t,value:n}=e;return I.createElement("div",{id:t,style:Ln},n)}function Pn(e){let{id:t,announcement:n,ariaLiveType:r="assertive"}=e;const o={position:"fixed",top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(100%)",whiteSpace:"nowrap"};return I.createElement("div",{id:t,style:o,role:"status","aria-live":r,"aria-atomic":!0},n)}function zn(){const[e,t]=c.useState("");return{announce:c.useCallback(r=>{r!=null&&t(r)},[]),announcement:e}}const Gt=c.createContext(null);function Bn(e){const t=c.useContext(Gt);c.useEffect(()=>{if(!t)throw new Error("useDndMonitor must be used within a children of <DndContext>");return t(e)},[e,t])}function Fn(){const[e]=c.useState(()=>new Set),t=c.useCallback(r=>(e.add(r),()=>e.delete(r)),[e]);return[c.useCallback(r=>{let{type:o,event:i}=r;e.forEach(s=>{var a;return(a=s[o])==null?void 0:a.call(s,i)})},[e]),t]}const $n={draggable:`
|
|
2
2
|
To pick up a draggable item, press the space bar.
|
|
3
3
|
While dragging, use the arrow keys to move the item.
|
|
4
4
|
Press space again to drop the item in its new position, or press escape to cancel.
|