@mindexec/cli 0.2.478 → 0.2.480
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 +323 -323
- package/codex-model-catalog.js +202 -202
- package/codex-runtime.js +1608 -1608
- package/desktop-workspace-state.cjs +120 -120
- package/electron/main.cjs +517 -517
- package/electron/preload.cjs +17 -17
- package/electron/recurring-update-owner-smoke.mjs +55 -55
- package/electron/recurring-update-owner.cjs +97 -97
- package/electron/source-smoke.mjs +108 -108
- package/electron/update-feed-resolver.cjs +79 -79
- package/electron/update-feed.json +10 -10
- package/electron/update-manager-smoke.mjs +146 -146
- package/electron/update-manager.cjs +297 -297
- package/electron/windows-package-smoke.mjs +156 -156
- package/launch-bridge.cjs +236 -236
- package/lzo1x.js +110 -110
- package/mode4-atlas-worker.js +440 -440
- package/mode4-atlas.js +130 -130
- package/package.json +1 -1
- package/port-guard.cjs +285 -285
- package/remote-fast/osx-arm64/MacScreenCaptureKitH264.swift +339 -339
- package/remote-fast/osx-arm64/MacSystemAudioCapture.swift +214 -214
- package/remote-fast/osx-arm64/UnixRawCaptureHelper.mjs +80 -80
- package/remote-fast/osx-arm64/livedesk-raw-capture-resampler.mjs +73 -73
- package/remote-fast/osx-arm64/mindexec-remote-fast.dll +0 -0
- package/remote-fast/osx-x64/MacScreenCaptureKitH264.swift +339 -339
- package/remote-fast/osx-x64/MacSystemAudioCapture.swift +214 -214
- package/remote-fast/osx-x64/UnixRawCaptureHelper.mjs +80 -80
- package/remote-fast/osx-x64/livedesk-raw-capture-resampler.mjs +73 -73
- package/remote-fast/osx-x64/mindexec-remote-fast.dll +0 -0
- package/remote-fast/win-x64/mindexec-remote-fast.dll +0 -0
- package/remote-hub.js +3698 -3698
- package/scripts/auth-session-smoke.mjs +262 -262
- package/scripts/board-render-ownership-smoke.mjs +85 -85
- package/scripts/codex-model-catalog-smoke.mjs +150 -150
- package/scripts/codex-runtime-home-smoke.mjs +58 -58
- package/scripts/codex-sdk-image-live-smoke.mjs +43 -43
- package/scripts/codex-sdk-image-runtime-smoke.mjs +122 -122
- package/scripts/codex-sdk-runtime-smoke.mjs +89 -89
- package/scripts/desktop-update-publisher-smoke.mjs +89 -89
- package/scripts/desktop-update-worker-smoke.mjs +72 -72
- package/scripts/desktop-workspace-state-smoke.mjs +81 -81
- package/scripts/drive-installed-update-smoke.mjs +67 -67
- package/scripts/npm-fresh-install-smoke.mjs +216 -216
- package/scripts/publish-mindexec-desktop-updates.mjs +224 -224
- package/scripts/remote-agent-managed-smoke.mjs +318 -318
- package/scripts/remote-agent-package-smoke.mjs +64 -64
- package/scripts/remote-agent-ws-smoke.mjs +269 -269
- package/scripts/remote-fast-live-rate-smoke.mjs +343 -343
- package/scripts/remote-fast-mdm-browser-smoke.mjs +453 -453
- package/scripts/remote-fleet-render-smoke.mjs +1350 -1350
- package/scripts/remote-frame-ws-smoke.mjs +234 -234
- package/scripts/remote-http-smoke.mjs +592 -592
- package/scripts/remote-hub-identity-smoke.mjs +146 -146
- package/scripts/remote-hub-scale-smoke.mjs +124 -124
- package/scripts/remote-hub-smoke.mjs +699 -699
- package/scripts/remote-input-ws-smoke.mjs +263 -263
- package/scripts/remote-registry-follower-smoke.mjs +815 -815
- package/scripts/setup-tree-sitter-grammars.mjs +59 -59
- package/server.js +7510 -7510
- package/start-bridge.bat +32 -32
- package/start-bridge.sh +81 -81
- package/tree-sitter-grammars/README.md +18 -0
- package/tree-sitter-grammars/tree-sitter-c_sharp.wasm +0 -0
- package/tree-sitter-grammars/tree-sitter-go.wasm +0 -0
- package/tree-sitter-grammars/tree-sitter-java.wasm +0 -0
- package/tree-sitter-grammars/tree-sitter-javascript.wasm +0 -0
- package/tree-sitter-grammars/tree-sitter-python.wasm +0 -0
- package/tree-sitter-grammars/tree-sitter-rust.wasm +0 -0
- package/tree-sitter-grammars/tree-sitter-tsx.wasm +0 -0
- package/tree-sitter-grammars/tree-sitter-typescript.wasm +0 -0
- package/wwwroot/_content/MindExecution.Plugins.Admin/css/admin-dashboard.css +546 -546
- package/wwwroot/_content/MindExecution.Plugins.Directory/background.png +0 -0
- package/wwwroot/_content/MindExecution.Plugins.YouTube/css/youtube-search.css +251 -251
- package/wwwroot/_content/MindExecution.Shared/css/mind-map-overrides.css +3789 -3789
- package/wwwroot/_content/MindExecution.Shared/fonts/NotoSansKR-Bold.ttf +0 -0
- package/wwwroot/_content/MindExecution.Shared/fonts/NotoSansKR-Regular.ttf +0 -0
- package/wwwroot/_content/MindExecution.Shared/js/agent-visualization.js +27 -27
- package/wwwroot/_content/MindExecution.Shared/js/background-themes.js +1449 -1449
- package/wwwroot/_content/MindExecution.Shared/js/code-master.js +8316 -8316
- package/wwwroot/_content/MindExecution.Shared/js/file-system-helper.js +338 -338
- package/wwwroot/_content/MindExecution.Shared/js/marked.min.js +69 -69
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-animated-image-preview.js +270 -270
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-automation-edge-motion.js +170 -170
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-board-render-ownership.js +81 -81
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-core.js +10528 -10506
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-core.js.backup +1059 -0
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-css3d-hotpath.js +902 -902
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-css3d-manager.js +24637 -24637
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-dev-guards.js +325 -325
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-dnd.js +1491 -1491
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-dnd.js.bak +434 -0
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-glow-shader.js +70 -70
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-image-policy.js +218 -218
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-interactions.js +7081 -7087
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-lod-plan-worker.js +160 -160
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-lod-renderer.js +9960 -9958
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-lod-video-placeholder.js +107 -107
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-logic-workers.js +1004 -1004
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-menu-manager.js +1351 -1351
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-multi-select.js +865 -865
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-node-search-worker.js +554 -554
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-nodes.js +4771 -4744
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-normal-boundary-optimizer.js +624 -624
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-object-manager.js +241 -241
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-object-manager.js.backup +372 -0
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-pipeline.js +2290 -2290
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-remote-codecs.js +202 -202
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-render-plan.js +1971 -1971
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-text-lod-system.js +93 -93
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-texture-factory.js +2391 -2391
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-texture-factory.js.backup +1258 -0
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-video-playback-controls.js +95 -95
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-visibility-worker.js +895 -895
- package/wwwroot/_content/MindExecution.Shared/js/mindmap-toolbar.js +636 -636
- package/wwwroot/_content/MindExecution.Shared/js/native-drop-handler.js +45 -45
- package/wwwroot/_content/MindExecution.Shared/js/plan-master.js +117 -117
- package/wwwroot/_content/MindExecution.Shared/js/renderers/CSS3DRenderer.js +114 -114
- package/wwwroot/_content/MindExecution.Shared/js/texture-worker-manager.js +10 -10
- package/wwwroot/_content/MindExecution.Shared/js/three.min.js +6 -6
- package/wwwroot/_content/MindExecution.Shared/js/token-manager.js +7 -7
- package/wwwroot/_content/MindExecution.Shared/js/troika-bundle.js +6 -6
- package/wwwroot/_content/MindExecution.Shared/js/troika-bundle.js.map +2 -2
- package/wwwroot/_content/MindExecution.Shared/lib/font-awesome/css/all.min.css +8 -8
- package/wwwroot/_content/MindExecution.Shared/models/vocab.txt +30522 -30522
- package/wwwroot/_framework/{Google.Protobuf.33g2gb5is0.dll → Google.Protobuf.9h59ukbel7.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Core.z100xo4mg0.dll → MindExecution.Core.gnj3fo0pr7.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Kernel.i9cldrx8yc.dll → MindExecution.Kernel.1qygzf8o02.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.Admin.48lzqddb0a.dll → MindExecution.Plugins.Admin.n3uxh144wo.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.Business.7m8u1q142p.dll → MindExecution.Plugins.Business.vl5dximn25.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.Concept.cl5wmr53od.dll → MindExecution.Plugins.Concept.rutru9qeoi.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.Directory.slipi39041.dll → MindExecution.Plugins.Directory.fqbmq85het.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.PlanMaster.qfge05l671.dll → MindExecution.Plugins.PlanMaster.ko11cc9pll.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.YouTube.tn7v29ut77.dll → MindExecution.Plugins.YouTube.mt39q0to2j.dll} +0 -0
- package/wwwroot/_framework/MindExecution.Shared.umgls362or.dll +0 -0
- package/wwwroot/_framework/{MindExecution.Web.rwawrxxk38.dll → MindExecution.Web.1dwoarj2hg.dll} +0 -0
- package/wwwroot/_framework/{System.Collections.23yxgetbju.dll → System.Collections.zyvbaq6mpd.dll} +0 -0
- package/wwwroot/_framework/blazor.boot.json +25 -25
- package/wwwroot/_headers +40 -40
- package/wwwroot/_redirects +1 -1
- package/wwwroot/index.html +772 -772
- package/wwwroot/js/marketing-tool.js +180 -180
- package/wwwroot/manifest.webmanifest +23 -23
- package/wwwroot/service-worker-assets.js +109 -81
- package/wwwroot/service-worker.js +33 -33
- package/wwwroot/_framework/MindExecution.Shared.rjqlf0umjn.dll +0 -0
package/README.md
CHANGED
|
@@ -1,232 +1,232 @@
|
|
|
1
|
-
# MindExec Local Bridge Server
|
|
2
|
-
|
|
3
|
-
??Blazor ?깆뿉??濡쒖뺄 ?뚯씪 ?쒖뒪?쒖뿉 ?묎렐?섍린 ?꾪븳 Node.js 釉뚮━吏 ?쒕쾭?낅땲??
|
|
4
|
-
|
|
5
|
-
## npm quick start
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
npx -y mindexec@latest
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
`mindexec` is the short official launcher alias. Existing
|
|
12
|
-
`npx -y @mindexec/cli@latest` commands remain compatible.
|
|
13
|
-
|
|
14
|
-
The npm CLI now starts both pieces of the local product:
|
|
15
|
-
|
|
16
|
-
- MindCanvas app: `http://localhost:5147/mindcanvas`
|
|
17
|
-
- LocalBridge API: `http://127.0.0.1:5147/api/status`
|
|
18
|
-
- Workspace assets: `http://127.0.0.1:5147/assets/...`
|
|
19
|
-
|
|
20
|
-
By default the CLI opens the MindCanvas app in your default browser after the
|
|
21
|
-
bridge is ready. Use `mindexec --no-open` or `MINDEXEC_NO_OPEN=1` when you only
|
|
22
|
-
want to start the listener.
|
|
23
|
-
|
|
24
|
-
For npx and global installs, the default workspace is the directory where you
|
|
25
|
-
run the command. Run it from the folder that contains your `.mindexec` data, or
|
|
26
|
-
pass the workspace explicitly:
|
|
27
|
-
|
|
28
|
-
```bash
|
|
29
|
-
npx -y mindexec@latest --workspace /path/to/workspace
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
For local frontend development, keep LocalBridge running and refresh the
|
|
33
|
-
packaged app bundle after code changes:
|
|
34
|
-
|
|
35
|
-
```powershell
|
|
36
|
-
.\scripts\publish-mindexec-cli.ps1 -AppOnly
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
Then hard-refresh `http://localhost:5147/mindcanvas` in the browser.
|
|
40
|
-
|
|
41
|
-
The app and bridge are packaged together. Run `scripts/publish-mindexec-cli.ps1`
|
|
42
|
-
from the repository root before publishing so the latest
|
|
43
|
-
`MindExecution.Web` WASM `wwwroot` is copied into `LocalBridge/wwwroot`.
|
|
44
|
-
The packaged app is configured with `Bridge:Url=app-origin`, so custom
|
|
45
|
-
`BRIDGE_PORT` values keep the WASM app and LocalBridge API on the same origin.
|
|
46
|
-
The publish helper trims hosted/demo-only gallery images and unused
|
|
47
|
-
precompressed static files from the npm bundle by default. Use
|
|
48
|
-
`-KeepPackagedGalleryImages` or `-KeepPackagedPrecompressedAssets` only when
|
|
49
|
-
testing a full untrimmed local package.
|
|
50
|
-
|
|
51
|
-
## Standalone Electron desktop app
|
|
52
|
-
|
|
53
|
-
The Electron build contains both the published MindCanvas frontend and
|
|
54
|
-
LocalBridge runtime. It does not discover, replace, or reuse a separately
|
|
55
|
-
running `npx` Bridge. Each desktop launch allocates dedicated available
|
|
56
|
-
LocalBridge and RemoteHub ports, starts its bundled runtime, and releases those
|
|
57
|
-
ports when the app exits.
|
|
58
|
-
|
|
59
|
-
Build Windows installer and portable artifacts:
|
|
60
|
-
|
|
61
|
-
```powershell
|
|
62
|
-
cd LocalBridge
|
|
63
|
-
npm run desktop:build:win
|
|
64
|
-
npm run test:desktop:win
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
Release artifacts are written to `artifacts/electron`:
|
|
68
|
-
|
|
69
|
-
- `MindExec-Setup-<version>-x64.exe`
|
|
70
|
-
- `MindExec-Portable-<version>-x64.exe`
|
|
71
|
-
- `win-unpacked/MindExec.exe`
|
|
72
|
-
|
|
73
|
-
The default desktop workspace is `Documents/MindExecution`. Set
|
|
74
|
-
`MINDEXEC_DESKTOP_WORKSPACE` to use an explicit workspace. Store signing,
|
|
75
|
-
Partner Center identity, Apple provisioning, and sandbox entitlements are
|
|
76
|
-
release-channel credentials and are intentionally not embedded in source.
|
|
77
|
-
|
|
78
|
-
## Remote Direct quick start
|
|
79
|
-
|
|
80
|
-
LocalBridge also starts a separate RemoteHub listener for direct remote-agent
|
|
81
|
-
experiments. By default it binds to loopback only:
|
|
82
|
-
|
|
83
|
-
```bash
|
|
84
|
-
npx -y mindexec@latest
|
|
85
|
-
npx @mindexec/remote connect --manager 127.0.0.1:5198 --pair <pair-token>
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
Read the pair token from the protected local endpoint:
|
|
89
|
-
|
|
90
|
-
```bash
|
|
91
|
-
curl -H "X-Bridge-Token: <bridge-token>" http://127.0.0.1:5147/api/remote/status
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
LAN/direct mode must be enabled explicitly by changing the RemoteHub bind host:
|
|
95
|
-
|
|
96
|
-
```powershell
|
|
97
|
-
$env:REMOTE_HUB_HOST="0.0.0.0"
|
|
98
|
-
$env:REMOTE_HUB_PORT="5198"
|
|
99
|
-
$env:REMOTE_HUB_PAIR_TOKEN="<strong-token>"
|
|
100
|
-
npx -y mindexec@latest
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
Device inventory is intentionally not paginated:
|
|
104
|
-
|
|
105
|
-
```bash
|
|
106
|
-
curl -H "X-Bridge-Token: <bridge-token>" http://127.0.0.1:5147/api/remote/devices
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
Request and read the latest view-only thumbnail for a connected device:
|
|
110
|
-
|
|
111
|
-
```bash
|
|
112
|
-
curl -X POST -H "X-Bridge-Token: <bridge-token>" http://127.0.0.1:5147/api/remote/devices/<device-id>/thumbnail/request
|
|
113
|
-
curl -H "X-Bridge-Token: <bridge-token>" http://127.0.0.1:5147/api/remote/devices/<device-id>/thumbnail
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
Start, read, and stop the focused view-only RemoteFast live stream:
|
|
117
|
-
|
|
118
|
-
```bash
|
|
119
|
-
curl -X POST -H "X-Bridge-Token: <bridge-token>" -H "Content-Type: application/json" \
|
|
120
|
-
-d "{\"fps\":12,\"maxWidth\":960,\"maxHeight\":540,\"quality\":60}" \
|
|
121
|
-
http://127.0.0.1:5147/api/remote/devices/<device-id>/live/start
|
|
122
|
-
|
|
123
|
-
curl -H "X-Bridge-Token: <bridge-token>" http://127.0.0.1:5147/api/remote/devices/<device-id>/live/frame
|
|
124
|
-
|
|
125
|
-
curl -X POST -H "X-Bridge-Token: <bridge-token>" http://127.0.0.1:5147/api/remote/devices/<device-id>/live/stop
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
Queue a safe task-only instruction for one device or all connected devices:
|
|
129
|
-
|
|
130
|
-
```bash
|
|
131
|
-
curl -X POST -H "X-Bridge-Token: <bridge-token>" -H "Content-Type: application/json" \
|
|
132
|
-
-d "{\"instruction\":\"Check the desktop and report status.\"}" \
|
|
133
|
-
http://127.0.0.1:5147/api/remote/devices/<device-id>/tasks
|
|
134
|
-
|
|
135
|
-
curl -X POST -H "X-Bridge-Token: <bridge-token>" -H "Content-Type: application/json" \
|
|
136
|
-
-d "{\"instruction\":\"Prepare a short status report.\",\"allConnected\":true}" \
|
|
137
|
-
http://127.0.0.1:5147/api/remote/tasks
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
Queue an opt-in text-only AI assist task for agents started with `--ai`:
|
|
141
|
-
|
|
142
|
-
```bash
|
|
143
|
-
curl -X POST -H "X-Bridge-Token: <bridge-token>" -H "Content-Type: application/json" \
|
|
144
|
-
-d "{\"instruction\":\"Summarize what this computer should do next.\",\"allConnected\":true,\"approvalLevel\":\"ai-assist\"}" \
|
|
145
|
-
http://127.0.0.1:5147/api/remote/tasks
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
?먮뒗 ?꾩뿭 ?ㅼ튂 ???ㅽ뻾?⑸땲??
|
|
149
|
-
|
|
150
|
-
```bash
|
|
151
|
-
npm install -g @mindexec/cli
|
|
152
|
-
mindexec
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
湲곕낯 ?ㅽ뻾 二쇱냼??`http://127.0.0.1:5147`?낅땲?? `WORKSPACE_PATH`媛 鍮꾩뼱 ?덉쑝硫??ㅼ튂???⑦궎吏??遺紐??대뜑瑜?湲곕낯 ?묒뾽 怨듦컙?쇰줈 ?ъ슜?⑸땲??
|
|
156
|
-
|
|
157
|
-
```bash
|
|
158
|
-
mindexec --workspace /custom/path
|
|
159
|
-
BRIDGE_PORT=8080 WORKSPACE_PATH=/custom/path mindexec
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
?꾩?留먭낵 踰꾩쟾 ?뺤씤:
|
|
163
|
-
|
|
164
|
-
```bash
|
|
165
|
-
mindexec --help
|
|
166
|
-
mindexec --version
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
## ?ㅼ튂
|
|
1
|
+
# MindExec Local Bridge Server
|
|
2
|
+
|
|
3
|
+
??Blazor ?깆뿉??濡쒖뺄 ?뚯씪 ?쒖뒪?쒖뿉 ?묎렐?섍린 ?꾪븳 Node.js 釉뚮━吏 ?쒕쾭?낅땲??
|
|
4
|
+
|
|
5
|
+
## npm quick start
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npx -y mindexec@latest
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
`mindexec` is the short official launcher alias. Existing
|
|
12
|
+
`npx -y @mindexec/cli@latest` commands remain compatible.
|
|
13
|
+
|
|
14
|
+
The npm CLI now starts both pieces of the local product:
|
|
15
|
+
|
|
16
|
+
- MindCanvas app: `http://localhost:5147/mindcanvas`
|
|
17
|
+
- LocalBridge API: `http://127.0.0.1:5147/api/status`
|
|
18
|
+
- Workspace assets: `http://127.0.0.1:5147/assets/...`
|
|
19
|
+
|
|
20
|
+
By default the CLI opens the MindCanvas app in your default browser after the
|
|
21
|
+
bridge is ready. Use `mindexec --no-open` or `MINDEXEC_NO_OPEN=1` when you only
|
|
22
|
+
want to start the listener.
|
|
23
|
+
|
|
24
|
+
For npx and global installs, the default workspace is the directory where you
|
|
25
|
+
run the command. Run it from the folder that contains your `.mindexec` data, or
|
|
26
|
+
pass the workspace explicitly:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
npx -y mindexec@latest --workspace /path/to/workspace
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
For local frontend development, keep LocalBridge running and refresh the
|
|
33
|
+
packaged app bundle after code changes:
|
|
34
|
+
|
|
35
|
+
```powershell
|
|
36
|
+
.\scripts\publish-mindexec-cli.ps1 -AppOnly
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Then hard-refresh `http://localhost:5147/mindcanvas` in the browser.
|
|
40
|
+
|
|
41
|
+
The app and bridge are packaged together. Run `scripts/publish-mindexec-cli.ps1`
|
|
42
|
+
from the repository root before publishing so the latest
|
|
43
|
+
`MindExecution.Web` WASM `wwwroot` is copied into `LocalBridge/wwwroot`.
|
|
44
|
+
The packaged app is configured with `Bridge:Url=app-origin`, so custom
|
|
45
|
+
`BRIDGE_PORT` values keep the WASM app and LocalBridge API on the same origin.
|
|
46
|
+
The publish helper trims hosted/demo-only gallery images and unused
|
|
47
|
+
precompressed static files from the npm bundle by default. Use
|
|
48
|
+
`-KeepPackagedGalleryImages` or `-KeepPackagedPrecompressedAssets` only when
|
|
49
|
+
testing a full untrimmed local package.
|
|
50
|
+
|
|
51
|
+
## Standalone Electron desktop app
|
|
52
|
+
|
|
53
|
+
The Electron build contains both the published MindCanvas frontend and
|
|
54
|
+
LocalBridge runtime. It does not discover, replace, or reuse a separately
|
|
55
|
+
running `npx` Bridge. Each desktop launch allocates dedicated available
|
|
56
|
+
LocalBridge and RemoteHub ports, starts its bundled runtime, and releases those
|
|
57
|
+
ports when the app exits.
|
|
58
|
+
|
|
59
|
+
Build Windows installer and portable artifacts:
|
|
60
|
+
|
|
61
|
+
```powershell
|
|
62
|
+
cd LocalBridge
|
|
63
|
+
npm run desktop:build:win
|
|
64
|
+
npm run test:desktop:win
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Release artifacts are written to `artifacts/electron`:
|
|
68
|
+
|
|
69
|
+
- `MindExec-Setup-<version>-x64.exe`
|
|
70
|
+
- `MindExec-Portable-<version>-x64.exe`
|
|
71
|
+
- `win-unpacked/MindExec.exe`
|
|
72
|
+
|
|
73
|
+
The default desktop workspace is `Documents/MindExecution`. Set
|
|
74
|
+
`MINDEXEC_DESKTOP_WORKSPACE` to use an explicit workspace. Store signing,
|
|
75
|
+
Partner Center identity, Apple provisioning, and sandbox entitlements are
|
|
76
|
+
release-channel credentials and are intentionally not embedded in source.
|
|
77
|
+
|
|
78
|
+
## Remote Direct quick start
|
|
79
|
+
|
|
80
|
+
LocalBridge also starts a separate RemoteHub listener for direct remote-agent
|
|
81
|
+
experiments. By default it binds to loopback only:
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
npx -y mindexec@latest
|
|
85
|
+
npx @mindexec/remote connect --manager 127.0.0.1:5198 --pair <pair-token>
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Read the pair token from the protected local endpoint:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
curl -H "X-Bridge-Token: <bridge-token>" http://127.0.0.1:5147/api/remote/status
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
LAN/direct mode must be enabled explicitly by changing the RemoteHub bind host:
|
|
95
|
+
|
|
96
|
+
```powershell
|
|
97
|
+
$env:REMOTE_HUB_HOST="0.0.0.0"
|
|
98
|
+
$env:REMOTE_HUB_PORT="5198"
|
|
99
|
+
$env:REMOTE_HUB_PAIR_TOKEN="<strong-token>"
|
|
100
|
+
npx -y mindexec@latest
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Device inventory is intentionally not paginated:
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
curl -H "X-Bridge-Token: <bridge-token>" http://127.0.0.1:5147/api/remote/devices
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Request and read the latest view-only thumbnail for a connected device:
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
curl -X POST -H "X-Bridge-Token: <bridge-token>" http://127.0.0.1:5147/api/remote/devices/<device-id>/thumbnail/request
|
|
113
|
+
curl -H "X-Bridge-Token: <bridge-token>" http://127.0.0.1:5147/api/remote/devices/<device-id>/thumbnail
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Start, read, and stop the focused view-only RemoteFast live stream:
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
curl -X POST -H "X-Bridge-Token: <bridge-token>" -H "Content-Type: application/json" \
|
|
120
|
+
-d "{\"fps\":12,\"maxWidth\":960,\"maxHeight\":540,\"quality\":60}" \
|
|
121
|
+
http://127.0.0.1:5147/api/remote/devices/<device-id>/live/start
|
|
122
|
+
|
|
123
|
+
curl -H "X-Bridge-Token: <bridge-token>" http://127.0.0.1:5147/api/remote/devices/<device-id>/live/frame
|
|
124
|
+
|
|
125
|
+
curl -X POST -H "X-Bridge-Token: <bridge-token>" http://127.0.0.1:5147/api/remote/devices/<device-id>/live/stop
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Queue a safe task-only instruction for one device or all connected devices:
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
curl -X POST -H "X-Bridge-Token: <bridge-token>" -H "Content-Type: application/json" \
|
|
132
|
+
-d "{\"instruction\":\"Check the desktop and report status.\"}" \
|
|
133
|
+
http://127.0.0.1:5147/api/remote/devices/<device-id>/tasks
|
|
134
|
+
|
|
135
|
+
curl -X POST -H "X-Bridge-Token: <bridge-token>" -H "Content-Type: application/json" \
|
|
136
|
+
-d "{\"instruction\":\"Prepare a short status report.\",\"allConnected\":true}" \
|
|
137
|
+
http://127.0.0.1:5147/api/remote/tasks
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Queue an opt-in text-only AI assist task for agents started with `--ai`:
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
curl -X POST -H "X-Bridge-Token: <bridge-token>" -H "Content-Type: application/json" \
|
|
144
|
+
-d "{\"instruction\":\"Summarize what this computer should do next.\",\"allConnected\":true,\"approvalLevel\":\"ai-assist\"}" \
|
|
145
|
+
http://127.0.0.1:5147/api/remote/tasks
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
?먮뒗 ?꾩뿭 ?ㅼ튂 ???ㅽ뻾?⑸땲??
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
npm install -g @mindexec/cli
|
|
152
|
+
mindexec
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
湲곕낯 ?ㅽ뻾 二쇱냼??`http://127.0.0.1:5147`?낅땲?? `WORKSPACE_PATH`媛 鍮꾩뼱 ?덉쑝硫??ㅼ튂???⑦궎吏??遺紐??대뜑瑜?湲곕낯 ?묒뾽 怨듦컙?쇰줈 ?ъ슜?⑸땲??
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
mindexec --workspace /custom/path
|
|
159
|
+
BRIDGE_PORT=8080 WORKSPACE_PATH=/custom/path mindexec
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
?꾩?留먭낵 踰꾩쟾 ?뺤씤:
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
mindexec --help
|
|
166
|
+
mindexec --version
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
## ?ㅼ튂
|
|
170
170
|
|
|
171
171
|
```bash
|
|
172
172
|
cd LocalBridge
|
|
173
173
|
npm install
|
|
174
174
|
```
|
|
175
175
|
|
|
176
|
-
## ?ㅽ뻾
|
|
177
|
-
|
|
178
|
-
### ?쇰컲 ?ㅽ뻾
|
|
179
|
-
```bash
|
|
180
|
-
cd LocalBridge
|
|
181
|
-
npm start
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
`npm start`??`WORKSPACE_PATH`媛 鍮꾩뼱 ?덉쑝硫?`LocalBridge`??遺紐??대뜑(蹂댄넻 ??μ냼 猷⑦듃)瑜?湲곕낯 ?묒뾽 怨듦컙?쇰줈 ?ъ슜?⑸땲??
|
|
185
|
-
|
|
186
|
-
### macOS / Linux?먯꽌 ?명븯寃??ㅽ뻾
|
|
187
|
-
```bash
|
|
188
|
-
cd LocalBridge
|
|
189
|
-
chmod +x start-bridge.sh
|
|
190
|
-
./start-bridge.sh
|
|
191
|
-
```
|
|
192
|
-
|
|
193
|
-
`start-bridge.sh`???ㅼ쓬???먮룞?쇰줈 泥섎━?⑸땲??
|
|
194
|
-
- `WORKSPACE_PATH`媛 ?놁쑝硫???μ냼 猷⑦듃瑜??묒뾽 怨듦컙?쇰줈 ?ъ슜
|
|
195
|
-
- `BRIDGE_PORT`媛 ?놁쑝硫?`5147` ?ъ슜
|
|
196
|
-
- 媛숈? ?ы듃???대? 釉뚮━吏媛 ???덉쑝硫?以묐났 ?ㅽ뻾 諛⑹?
|
|
197
|
-
- ?ㅻⅨ OS?먯꽌 蹂듭궗????`node_modules`媛 媛먯??섎㈃ ?꾩옱 ?뚮옯?쇱슜?쇰줈 ?ㅼ떆 `npm install`
|
|
198
|
-
|
|
199
|
-
### 媛쒕컻 紐⑤뱶 (?먮룞 ?ъ떆??
|
|
200
|
-
```bash
|
|
201
|
-
npm run dev
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
### ?섍꼍 蹂??
|
|
205
|
-
|
|
206
|
-
| 蹂??| ?ㅻ챸 | 湲곕낯媛?|
|
|
207
|
-
|------|------|--------|
|
|
208
|
-
| `BRIDGE_PORT` | ?쒕쾭 ?ы듃 | 5147 |
|
|
209
|
-
| `WORKSPACE_PATH` | ?묒뾽 怨듦컙 寃쎈줈 | `LocalBridge` ?먮뒗 ?ㅼ튂 ?⑦궎吏??遺紐??대뜑 (?놁쑝硫?`~/Documents/MindExecution`) |
|
|
210
|
-
| `BRIDGE_TOKEN` | ?꾪뿕 REST API???ъ슜??怨좎젙 ?좏겙. 鍮꾩슦硫??ㅽ뻾 ???쒕뜡 ?앹꽦 | ?쒕뜡 |
|
|
211
|
-
| `BRIDGE_REQUIRE_TOKEN` | `false`/`0`/`off`濡??ㅼ젙?섎㈃ REST ?좏겙 寃??鍮꾪솢?깊솕 | true |
|
|
212
|
-
| `COMPANY_CORE_URL` | CompanyCore 濡쒖뺄 API 二쇱냼. `/api/company-core/*` ?꾨줉?????| http://127.0.0.1:5077 |
|
|
213
|
-
| `BRIDGE_SKIP_PORT_REAP` | ?쒖옉 ???숈씪 ?ы듃??湲곗〈 MindExec bridge ?뺣━瑜?嫄대꼫?? | false |
|
|
214
|
-
| `BRIDGE_FORCE_KILL_PORT_OWNER` | `BRIDGE_PORT`瑜??≪쓣 ?꾩쓽 ?꾨줈?몄뒪瑜??뺣━ | false |
|
|
215
|
-
|
|
216
|
-
?덉떆:
|
|
217
|
-
```bash
|
|
218
|
-
BRIDGE_PORT=8080 WORKSPACE_PATH=/custom/path npm start
|
|
219
|
-
```
|
|
220
|
-
|
|
221
|
-
macOS / Linux?먯꽌 ?ㅽ겕由쏀듃? ?④퍡 ?ㅽ뻾???뚮룄 ?숈씪?⑸땲??
|
|
222
|
-
```bash
|
|
223
|
-
BRIDGE_PORT=8080 WORKSPACE_PATH=/custom/path ./start-bridge.sh
|
|
224
|
-
```
|
|
225
|
-
|
|
226
|
-
## API ?붾뱶?ъ씤??
|
|
227
|
-
|
|
228
|
-
### ?곹깭 ?뺤씤
|
|
229
|
-
- `GET /api/status` - ?쒕쾭 ?곹깭 ?뺤씤, `/events`??`wsToken`怨??꾪뿕 REST API??`bridgeToken` 諛섑솚
|
|
176
|
+
## ?ㅽ뻾
|
|
177
|
+
|
|
178
|
+
### ?쇰컲 ?ㅽ뻾
|
|
179
|
+
```bash
|
|
180
|
+
cd LocalBridge
|
|
181
|
+
npm start
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
`npm start`??`WORKSPACE_PATH`媛 鍮꾩뼱 ?덉쑝硫?`LocalBridge`??遺紐??대뜑(蹂댄넻 ??μ냼 猷⑦듃)瑜?湲곕낯 ?묒뾽 怨듦컙?쇰줈 ?ъ슜?⑸땲??
|
|
185
|
+
|
|
186
|
+
### macOS / Linux?먯꽌 ?명븯寃??ㅽ뻾
|
|
187
|
+
```bash
|
|
188
|
+
cd LocalBridge
|
|
189
|
+
chmod +x start-bridge.sh
|
|
190
|
+
./start-bridge.sh
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
`start-bridge.sh`???ㅼ쓬???먮룞?쇰줈 泥섎━?⑸땲??
|
|
194
|
+
- `WORKSPACE_PATH`媛 ?놁쑝硫???μ냼 猷⑦듃瑜??묒뾽 怨듦컙?쇰줈 ?ъ슜
|
|
195
|
+
- `BRIDGE_PORT`媛 ?놁쑝硫?`5147` ?ъ슜
|
|
196
|
+
- 媛숈? ?ы듃???대? 釉뚮━吏媛 ???덉쑝硫?以묐났 ?ㅽ뻾 諛⑹?
|
|
197
|
+
- ?ㅻⅨ OS?먯꽌 蹂듭궗????`node_modules`媛 媛먯??섎㈃ ?꾩옱 ?뚮옯?쇱슜?쇰줈 ?ㅼ떆 `npm install`
|
|
198
|
+
|
|
199
|
+
### 媛쒕컻 紐⑤뱶 (?먮룞 ?ъ떆??
|
|
200
|
+
```bash
|
|
201
|
+
npm run dev
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### ?섍꼍 蹂??
|
|
205
|
+
|
|
206
|
+
| 蹂??| ?ㅻ챸 | 湲곕낯媛?|
|
|
207
|
+
|------|------|--------|
|
|
208
|
+
| `BRIDGE_PORT` | ?쒕쾭 ?ы듃 | 5147 |
|
|
209
|
+
| `WORKSPACE_PATH` | ?묒뾽 怨듦컙 寃쎈줈 | `LocalBridge` ?먮뒗 ?ㅼ튂 ?⑦궎吏??遺紐??대뜑 (?놁쑝硫?`~/Documents/MindExecution`) |
|
|
210
|
+
| `BRIDGE_TOKEN` | ?꾪뿕 REST API???ъ슜??怨좎젙 ?좏겙. 鍮꾩슦硫??ㅽ뻾 ???쒕뜡 ?앹꽦 | ?쒕뜡 |
|
|
211
|
+
| `BRIDGE_REQUIRE_TOKEN` | `false`/`0`/`off`濡??ㅼ젙?섎㈃ REST ?좏겙 寃??鍮꾪솢?깊솕 | true |
|
|
212
|
+
| `COMPANY_CORE_URL` | CompanyCore 濡쒖뺄 API 二쇱냼. `/api/company-core/*` ?꾨줉?????| http://127.0.0.1:5077 |
|
|
213
|
+
| `BRIDGE_SKIP_PORT_REAP` | ?쒖옉 ???숈씪 ?ы듃??湲곗〈 MindExec bridge ?뺣━瑜?嫄대꼫?? | false |
|
|
214
|
+
| `BRIDGE_FORCE_KILL_PORT_OWNER` | `BRIDGE_PORT`瑜??≪쓣 ?꾩쓽 ?꾨줈?몄뒪瑜??뺣━ | false |
|
|
215
|
+
|
|
216
|
+
?덉떆:
|
|
217
|
+
```bash
|
|
218
|
+
BRIDGE_PORT=8080 WORKSPACE_PATH=/custom/path npm start
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
macOS / Linux?먯꽌 ?ㅽ겕由쏀듃? ?④퍡 ?ㅽ뻾???뚮룄 ?숈씪?⑸땲??
|
|
222
|
+
```bash
|
|
223
|
+
BRIDGE_PORT=8080 WORKSPACE_PATH=/custom/path ./start-bridge.sh
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
## API ?붾뱶?ъ씤??
|
|
227
|
+
|
|
228
|
+
### ?곹깭 ?뺤씤
|
|
229
|
+
- `GET /api/status` - ?쒕쾭 ?곹깭 ?뺤씤, `/events`??`wsToken`怨??꾪뿕 REST API??`bridgeToken` 諛섑솚
|
|
230
230
|
|
|
231
231
|
### ?묒뾽 怨듦컙
|
|
232
232
|
- `GET /api/workspace` - ?꾩옱 ?묒뾽 怨듦컙 ?뺣낫
|
|
@@ -238,7 +238,7 @@ BRIDGE_PORT=8080 WORKSPACE_PATH=/custom/path ./start-bridge.sh
|
|
|
238
238
|
- `POST /api/file/delete` - ?뚯씪 ??젣
|
|
239
239
|
- `POST /api/file/exists` - ?뚯씪 議댁옱 ?뺤씤
|
|
240
240
|
- `POST /api/file/copy` - ?뚯씪 蹂듭궗
|
|
241
|
-
- `POST /api/file/move` - ?뚯씪 ?대룞/?대쫫 蹂寃?
|
|
241
|
+
- `POST /api/file/move` - ?뚯씪 ?대룞/?대쫫 蹂寃?
|
|
242
242
|
- `POST /api/file/info` - ?뚯씪 ?뺣낫
|
|
243
243
|
|
|
244
244
|
### ?붾젆?좊━ ?묒뾽
|
|
@@ -246,54 +246,54 @@ BRIDGE_PORT=8080 WORKSPACE_PATH=/custom/path ./start-bridge.sh
|
|
|
246
246
|
- `POST /api/dir/list` - ?붾젆?좊━ 紐⑸줉
|
|
247
247
|
- `POST /api/dir/delete` - ?붾젆?좊━ ??젣
|
|
248
248
|
|
|
249
|
-
### ???ㅽ뻾
|
|
250
|
-
- `POST /api/shell/execute` - ??紐낅졊 ?ㅽ뻾. 湲곗〈 ?명솚?⑹씠硫??대??곸쑝濡?job ?대깽?몃? `/events`濡??꾩넚
|
|
251
|
-
- `POST /api/shell/jobs` - ??紐낅졊??諛깃렇?쇱슫??job?쇰줈 ?쒖옉?섍퀬 `jobId` 諛섑솚
|
|
252
|
-
- `GET /api/shell/jobs/:jobId` - job ?곹깭/異쒕젰 議고쉶
|
|
253
|
-
- `POST /api/shell/jobs/:jobId/cancel` - ?ㅽ뻾 以묒씤 job 痍⑥냼
|
|
254
|
-
|
|
255
|
-
### ?대깽???ㅽ듃由?- `WebSocket /events?token=<wsToken>` - ?꾨줈?앺듃 蹂寃쎄낵 shell/Codex job ?대깽?몃? push
|
|
256
|
-
|
|
257
|
-
Shell/Codex job ?대깽??
|
|
258
|
-
- `ShellQueued`
|
|
259
|
-
- `ShellStarted`
|
|
260
|
-
- `ShellStdout`
|
|
261
|
-
- `ShellStderr`
|
|
262
|
-
- `ShellCompleted`
|
|
263
|
-
- `ShellFailed`
|
|
264
|
-
- `ShellCancelRequested`
|
|
265
|
-
|
|
266
|
-
### OpenAI Codex runtime
|
|
267
|
-
- `GET /api/codex/capabilities` - TypeScript SDK / App Server scaffold / Legacy Exec provider availability
|
|
268
|
-
- `POST /api/codex/thread/start` - start a local Codex thread
|
|
269
|
-
- `POST /api/codex/thread/run` - run a Codex turn. Uses `@openai/codex-sdk` first and falls back to legacy `codex exec`
|
|
270
|
-
- `POST /api/codex/image/run` - generate or edit one image through `@openai/codex-sdk`; invalid login opens the bundled browser sign-in flow and retries once
|
|
271
|
-
- `POST /api/codex/thread/resume` - resume a stored SDK thread by id
|
|
272
|
-
- `POST /api/codex/thread/cancel` - cancel an active turn
|
|
273
|
-
- `GET /api/codex/thread/:threadId/status` - inspect local thread status and compact run metadata
|
|
274
|
-
|
|
275
|
-
The TypeScript SDK runs only inside LocalBridge. Browser/WASM clients should call these bridge endpoints and must not import or execute Codex SDK packages directly.
|
|
276
|
-
|
|
277
|
-
By default, LocalBridge reuses the active `CODEX_HOME` (or the standard `~/.codex` home) so SDK calls share the existing Codex login. Set `MINDEXEC_CODEX_HOME` only when a deliberately separate MindExec login is required.
|
|
278
|
-
|
|
279
|
-
### Port ownership
|
|
280
|
-
|
|
281
|
-
On startup, LocalBridge checks `BRIDGE_PORT` and stops an existing MindExec/LocalBridge listener on that same port before binding. If the port is owned by an unrelated process, startup fails with a clear message instead of silently killing it. Set `BRIDGE_FORCE_KILL_PORT_OWNER=1` only when the launcher owns that port policy and should terminate any listener.
|
|
282
|
-
|
|
283
|
-
The `start-bridge.bat` and `start-bridge.sh` wrappers always delegate startup to `launch-bridge.cjs`, so port cleanup is handled by the same guard path on every launch.
|
|
284
|
-
### CompanyCore ?꾨줉??- `GET /api/company-core/health` -> `CompanyCore /health`
|
|
285
|
-
- `GET /api/company-core/companies` -> `CompanyCore /api/companies`
|
|
286
|
-
- `POST /api/company-core/companies/create-and-run` -> `CompanyCore /api/companies/create-and-run`
|
|
287
|
-
|
|
288
|
-
MindExec Web? CompanyCore ?ы듃瑜?吏곸젒 ???꾩슂 ?놁씠 LocalBridge `5147`留??몄텧?섎㈃ ?⑸땲?? ???꾨줉?쒕룄 Bridge Token 蹂댄샇瑜?諛쏆뒿?덈떎.
|
|
249
|
+
### ???ㅽ뻾
|
|
250
|
+
- `POST /api/shell/execute` - ??紐낅졊 ?ㅽ뻾. 湲곗〈 ?명솚?⑹씠硫??대??곸쑝濡?job ?대깽?몃? `/events`濡??꾩넚
|
|
251
|
+
- `POST /api/shell/jobs` - ??紐낅졊??諛깃렇?쇱슫??job?쇰줈 ?쒖옉?섍퀬 `jobId` 諛섑솚
|
|
252
|
+
- `GET /api/shell/jobs/:jobId` - job ?곹깭/異쒕젰 議고쉶
|
|
253
|
+
- `POST /api/shell/jobs/:jobId/cancel` - ?ㅽ뻾 以묒씤 job 痍⑥냼
|
|
254
|
+
|
|
255
|
+
### ?대깽???ㅽ듃由?- `WebSocket /events?token=<wsToken>` - ?꾨줈?앺듃 蹂寃쎄낵 shell/Codex job ?대깽?몃? push
|
|
256
|
+
|
|
257
|
+
Shell/Codex job ?대깽??
|
|
258
|
+
- `ShellQueued`
|
|
259
|
+
- `ShellStarted`
|
|
260
|
+
- `ShellStdout`
|
|
261
|
+
- `ShellStderr`
|
|
262
|
+
- `ShellCompleted`
|
|
263
|
+
- `ShellFailed`
|
|
264
|
+
- `ShellCancelRequested`
|
|
265
|
+
|
|
266
|
+
### OpenAI Codex runtime
|
|
267
|
+
- `GET /api/codex/capabilities` - TypeScript SDK / App Server scaffold / Legacy Exec provider availability
|
|
268
|
+
- `POST /api/codex/thread/start` - start a local Codex thread
|
|
269
|
+
- `POST /api/codex/thread/run` - run a Codex turn. Uses `@openai/codex-sdk` first and falls back to legacy `codex exec`
|
|
270
|
+
- `POST /api/codex/image/run` - generate or edit one image through `@openai/codex-sdk`; invalid login opens the bundled browser sign-in flow and retries once
|
|
271
|
+
- `POST /api/codex/thread/resume` - resume a stored SDK thread by id
|
|
272
|
+
- `POST /api/codex/thread/cancel` - cancel an active turn
|
|
273
|
+
- `GET /api/codex/thread/:threadId/status` - inspect local thread status and compact run metadata
|
|
274
|
+
|
|
275
|
+
The TypeScript SDK runs only inside LocalBridge. Browser/WASM clients should call these bridge endpoints and must not import or execute Codex SDK packages directly.
|
|
276
|
+
|
|
277
|
+
By default, LocalBridge reuses the active `CODEX_HOME` (or the standard `~/.codex` home) so SDK calls share the existing Codex login. Set `MINDEXEC_CODEX_HOME` only when a deliberately separate MindExec login is required.
|
|
278
|
+
|
|
279
|
+
### Port ownership
|
|
280
|
+
|
|
281
|
+
On startup, LocalBridge checks `BRIDGE_PORT` and stops an existing MindExec/LocalBridge listener on that same port before binding. If the port is owned by an unrelated process, startup fails with a clear message instead of silently killing it. Set `BRIDGE_FORCE_KILL_PORT_OWNER=1` only when the launcher owns that port policy and should terminate any listener.
|
|
282
|
+
|
|
283
|
+
The `start-bridge.bat` and `start-bridge.sh` wrappers always delegate startup to `launch-bridge.cjs`, so port cleanup is handled by the same guard path on every launch.
|
|
284
|
+
### CompanyCore ?꾨줉??- `GET /api/company-core/health` -> `CompanyCore /health`
|
|
285
|
+
- `GET /api/company-core/companies` -> `CompanyCore /api/companies`
|
|
286
|
+
- `POST /api/company-core/companies/create-and-run` -> `CompanyCore /api/companies/create-and-run`
|
|
287
|
+
|
|
288
|
+
MindExec Web? CompanyCore ?ы듃瑜?吏곸젒 ???꾩슂 ?놁씠 LocalBridge `5147`留??몄텧?섎㈃ ?⑸땲?? ???꾨줉?쒕룄 Bridge Token 蹂댄샇瑜?諛쏆뒿?덈떎.
|
|
289
289
|
|
|
290
290
|
## 蹂댁븞 二쇱쓽?ы빆
|
|
291
291
|
|
|
292
|
-
- ???쒕쾭??**濡쒖뺄?몄뒪??127.0.0.1)?먯꽌留?* ?묎렐 媛?ν빀?덈떎.
|
|
293
|
-
- ?묒뾽 怨듦컙 ?몃????뚯씪?먮뒗 ?묎렐?????놁뒿?덈떎.
|
|
294
|
-
- ?꾪뿕????紐낅졊(rm -rf, format ??? 李⑤떒?⑸땲??
|
|
295
|
-
- ?뚯씪 ?곌린/??젣, ?붾젆?좊━ ?앹꽦/??젣, asset ?낅줈?? shell, project open/close 媛숈? ?꾪뿕 REST API??湲곕낯?곸쑝濡?`X-Bridge-Token` ?먮뒗 `Authorization: Bearer <token>`???꾩슂?⑸땲??
|
|
296
|
-
- ?좏겙? `GET /api/status`??`bridgeToken`?쇰줈 ?뺤씤?⑸땲?? 怨좎젙 ?좏겙???꾩슂?섎㈃ `BRIDGE_TOKEN` ?섍꼍 蹂?섎? ?ъ슜?섏꽭??
|
|
292
|
+
- ???쒕쾭??**濡쒖뺄?몄뒪??127.0.0.1)?먯꽌留?* ?묎렐 媛?ν빀?덈떎.
|
|
293
|
+
- ?묒뾽 怨듦컙 ?몃????뚯씪?먮뒗 ?묎렐?????놁뒿?덈떎.
|
|
294
|
+
- ?꾪뿕????紐낅졊(rm -rf, format ??? 李⑤떒?⑸땲??
|
|
295
|
+
- ?뚯씪 ?곌린/??젣, ?붾젆?좊━ ?앹꽦/??젣, asset ?낅줈?? shell, project open/close 媛숈? ?꾪뿕 REST API??湲곕낯?곸쑝濡?`X-Bridge-Token` ?먮뒗 `Authorization: Bearer <token>`???꾩슂?⑸땲??
|
|
296
|
+
- ?좏겙? `GET /api/status`??`bridgeToken`?쇰줈 ?뺤씤?⑸땲?? 怨좎젙 ?좏겙???꾩슂?섎㈃ `BRIDGE_TOKEN` ?섍꼍 蹂?섎? ?ъ슜?섏꽭??
|
|
297
297
|
|
|
298
298
|
## ?ъ슜 ?덉떆
|
|
299
299
|
|
|
@@ -308,65 +308,65 @@ const data = await response.json();
|
|
|
308
308
|
console.log(data.content);
|
|
309
309
|
```
|
|
310
310
|
|
|
311
|
-
### ?뚯씪 ?곌린
|
|
312
|
-
```javascript
|
|
313
|
-
const status = await fetch('http://127.0.0.1:5147/api/status').then(r => r.json());
|
|
314
|
-
|
|
315
|
-
await fetch('http://127.0.0.1:5147/api/file/write', {
|
|
316
|
-
method: 'POST',
|
|
317
|
-
headers: {
|
|
318
|
-
'Content-Type': 'application/json',
|
|
319
|
-
[status.bridgeTokenHeader || 'X-Bridge-Token']: status.bridgeToken
|
|
320
|
-
},
|
|
321
|
-
body: JSON.stringify({
|
|
322
|
-
path: 'test.txt',
|
|
323
|
-
content: 'Hello, World!'
|
|
311
|
+
### ?뚯씪 ?곌린
|
|
312
|
+
```javascript
|
|
313
|
+
const status = await fetch('http://127.0.0.1:5147/api/status').then(r => r.json());
|
|
314
|
+
|
|
315
|
+
await fetch('http://127.0.0.1:5147/api/file/write', {
|
|
316
|
+
method: 'POST',
|
|
317
|
+
headers: {
|
|
318
|
+
'Content-Type': 'application/json',
|
|
319
|
+
[status.bridgeTokenHeader || 'X-Bridge-Token']: status.bridgeToken
|
|
320
|
+
},
|
|
321
|
+
body: JSON.stringify({
|
|
322
|
+
path: 'test.txt',
|
|
323
|
+
content: 'Hello, World!'
|
|
324
324
|
})
|
|
325
325
|
});
|
|
326
326
|
```
|
|
327
327
|
|
|
328
|
-
### ??紐낅졊 ?ㅽ뻾
|
|
329
|
-
```javascript
|
|
330
|
-
const status = await fetch('http://127.0.0.1:5147/api/status').then(r => r.json());
|
|
331
|
-
|
|
332
|
-
const response = await fetch('http://127.0.0.1:5147/api/shell/execute', {
|
|
333
|
-
method: 'POST',
|
|
334
|
-
headers: {
|
|
335
|
-
'Content-Type': 'application/json',
|
|
336
|
-
[status.bridgeTokenHeader || 'X-Bridge-Token']: status.bridgeToken
|
|
337
|
-
},
|
|
338
|
-
body: JSON.stringify({
|
|
339
|
-
command: 'dir',
|
|
340
|
-
timeout: 30000
|
|
328
|
+
### ??紐낅졊 ?ㅽ뻾
|
|
329
|
+
```javascript
|
|
330
|
+
const status = await fetch('http://127.0.0.1:5147/api/status').then(r => r.json());
|
|
331
|
+
|
|
332
|
+
const response = await fetch('http://127.0.0.1:5147/api/shell/execute', {
|
|
333
|
+
method: 'POST',
|
|
334
|
+
headers: {
|
|
335
|
+
'Content-Type': 'application/json',
|
|
336
|
+
[status.bridgeTokenHeader || 'X-Bridge-Token']: status.bridgeToken
|
|
337
|
+
},
|
|
338
|
+
body: JSON.stringify({
|
|
339
|
+
command: 'dir',
|
|
340
|
+
timeout: 30000
|
|
341
341
|
})
|
|
342
342
|
});
|
|
343
|
-
const result = await response.json();
|
|
344
|
-
console.log(result.stdout);
|
|
345
|
-
```
|
|
346
|
-
|
|
347
|
-
### ??job ?ㅽ듃由щ컢
|
|
348
|
-
```javascript
|
|
349
|
-
const status = await fetch('http://127.0.0.1:5147/api/status').then(r => r.json());
|
|
350
|
-
const ws = new WebSocket(`ws://127.0.0.1:5147/events?token=${encodeURIComponent(status.wsToken)}`);
|
|
351
|
-
|
|
352
|
-
ws.onmessage = (message) => {
|
|
353
|
-
const event = JSON.parse(message.data);
|
|
354
|
-
if (event.type === 'ShellStdout') console.log(event.payload.chunk);
|
|
355
|
-
if (event.type === 'ShellCompleted') console.log('done', event.payload.jobId);
|
|
356
|
-
};
|
|
357
|
-
|
|
358
|
-
await fetch('http://127.0.0.1:5147/api/shell/jobs', {
|
|
359
|
-
method: 'POST',
|
|
360
|
-
headers: {
|
|
361
|
-
'Content-Type': 'application/json',
|
|
362
|
-
[status.bridgeTokenHeader || 'X-Bridge-Token']: status.bridgeToken
|
|
363
|
-
},
|
|
364
|
-
body: JSON.stringify({
|
|
365
|
-
command: 'codex exec \"Summarize this repository\"',
|
|
366
|
-
timeout: 300000
|
|
367
|
-
})
|
|
368
|
-
});
|
|
369
|
-
```
|
|
343
|
+
const result = await response.json();
|
|
344
|
+
console.log(result.stdout);
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
### ??job ?ㅽ듃由щ컢
|
|
348
|
+
```javascript
|
|
349
|
+
const status = await fetch('http://127.0.0.1:5147/api/status').then(r => r.json());
|
|
350
|
+
const ws = new WebSocket(`ws://127.0.0.1:5147/events?token=${encodeURIComponent(status.wsToken)}`);
|
|
351
|
+
|
|
352
|
+
ws.onmessage = (message) => {
|
|
353
|
+
const event = JSON.parse(message.data);
|
|
354
|
+
if (event.type === 'ShellStdout') console.log(event.payload.chunk);
|
|
355
|
+
if (event.type === 'ShellCompleted') console.log('done', event.payload.jobId);
|
|
356
|
+
};
|
|
357
|
+
|
|
358
|
+
await fetch('http://127.0.0.1:5147/api/shell/jobs', {
|
|
359
|
+
method: 'POST',
|
|
360
|
+
headers: {
|
|
361
|
+
'Content-Type': 'application/json',
|
|
362
|
+
[status.bridgeTokenHeader || 'X-Bridge-Token']: status.bridgeToken
|
|
363
|
+
},
|
|
364
|
+
body: JSON.stringify({
|
|
365
|
+
command: 'codex exec \"Summarize this repository\"',
|
|
366
|
+
timeout: 300000
|
|
367
|
+
})
|
|
368
|
+
});
|
|
369
|
+
```
|
|
370
370
|
|
|
371
371
|
## CORS
|
|
372
372
|
|
|
@@ -382,6 +382,6 @@ await fetch('http://127.0.0.1:5147/api/shell/jobs', {
|
|
|
382
382
|
## Web怨?MAUI ?숈떆 ?ъ슜
|
|
383
383
|
|
|
384
384
|
1. 釉뚮━吏 ?쒕쾭瑜??ㅽ뻾?⑸땲??(`npm start`)
|
|
385
|
-
2. Web Blazor ?깆쓣 ?ㅽ뻾?⑸땲??
|
|
385
|
+
2. Web Blazor ?깆쓣 ?ㅽ뻾?⑸땲??
|
|
386
386
|
3. MAUI ?깆? 釉뚮━吏 ?쒕쾭 ?놁씠???묐룞?⑸땲??(吏곸젒 ?뚯씪 ?쒖뒪???묎렐)
|
|
387
387
|
|