robopark 3.1.2 → 3.3.0

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.
Files changed (101) hide show
  1. package/README.md +66 -95
  2. package/bin/robopark.js +9 -2
  3. package/conversation/elevenlabs_agent.py +1617 -1617
  4. package/conversation/supervisor_store.py +189 -189
  5. package/dist/{kernel/config-schema.js → config-schema.js} +1 -0
  6. package/dist/config-schema.js.map +1 -0
  7. package/dist/robopark/add-robot.js +1 -0
  8. package/dist/robopark/add-robot.js.map +1 -0
  9. package/dist/robopark/agent-ctl.js +1 -0
  10. package/dist/robopark/agent-ctl.js.map +1 -0
  11. package/dist/robopark/auto-start.js +51 -73
  12. package/dist/robopark/auto-start.js.map +1 -0
  13. package/dist/robopark/conversation.js +1 -0
  14. package/dist/robopark/conversation.js.map +1 -0
  15. package/dist/robopark/discovery.js +1 -0
  16. package/dist/robopark/discovery.js.map +1 -0
  17. package/dist/robopark/doctor.js +1 -0
  18. package/dist/robopark/doctor.js.map +1 -0
  19. package/dist/robopark/enroll.js +1 -0
  20. package/dist/robopark/enroll.js.map +1 -0
  21. package/dist/robopark/llm-set.js +1 -0
  22. package/dist/robopark/llm-set.js.map +1 -0
  23. package/dist/robopark/motor-control.js +1 -0
  24. package/dist/robopark/motor-control.js.map +1 -0
  25. package/dist/robopark/preview-agent-launcher.js +1 -0
  26. package/dist/robopark/preview-agent-launcher.js.map +1 -0
  27. package/dist/robopark/probe.js +16 -15
  28. package/dist/robopark/probe.js.map +1 -0
  29. package/dist/robopark/profile.js +1 -0
  30. package/dist/robopark/profile.js.map +1 -0
  31. package/dist/robopark/python-env.js +1 -7
  32. package/dist/robopark/python-env.js.map +1 -0
  33. package/dist/robopark/robot-runtime.js +1 -0
  34. package/dist/robopark/robot-runtime.js.map +1 -0
  35. package/dist/robopark/scan.js +1 -0
  36. package/dist/robopark/scan.js.map +1 -0
  37. package/dist/robopark/screen-control.js +1 -0
  38. package/dist/robopark/screen-control.js.map +1 -0
  39. package/dist/robopark/secrets.js +1 -0
  40. package/dist/robopark/secrets.js.map +1 -0
  41. package/dist/robopark/serve.js +4 -6
  42. package/dist/robopark/serve.js.map +1 -0
  43. package/dist/robopark/server-add.js +1 -0
  44. package/dist/robopark/server-add.js.map +1 -0
  45. package/dist/robopark/setup-livekit.js +53 -52
  46. package/dist/robopark/setup-livekit.js.map +1 -0
  47. package/dist/robopark/setup.js +1 -0
  48. package/dist/robopark/setup.js.map +1 -0
  49. package/dist/robopark/stop-all.js +1 -0
  50. package/dist/robopark/stop-all.js.map +1 -0
  51. package/dist/robopark/verify.js +1 -0
  52. package/dist/robopark/verify.js.map +1 -0
  53. package/dist/robopark/vision-agent-launcher.js +1 -0
  54. package/dist/robopark/vision-agent-launcher.js.map +1 -0
  55. package/dist/robopark/vision-control.js +1 -0
  56. package/dist/robopark/vision-control.js.map +1 -0
  57. package/dist/robopark-cli.js +7 -125
  58. package/dist/robopark-cli.js.map +1 -0
  59. package/package.json +16 -25
  60. package/pi-client/_install_steps.sh +29 -29
  61. package/pi-client/client.py +76 -76
  62. package/pi-client/install.sh +40 -40
  63. package/pi-client/join_convo.sh +54 -54
  64. package/pi-client/livekit_bridge.py +24 -24
  65. package/pi-client/motor_bridge.py +10 -10
  66. package/scheduler/__pycache__/main.cpython-312.pyc +0 -0
  67. package/scheduler/main.py +196 -17
  68. package/scheduler/media_lock.py +57 -57
  69. package/scheduler/preview_agent.py +1122 -1122
  70. package/scheduler/production_config.json +73 -113
  71. package/scheduler/scripts/install-robot-supervisor-linux.sh +33 -33
  72. package/{static → scheduler/static}/vendor/elevenlabs-client.iife.js +24199 -24199
  73. package/scheduler/static/voice-join.html +177 -0
  74. package/screen/screen_runtime.py +75 -75
  75. package/vision/app_pi_clean.py +297 -297
  76. package/vision/audio_server_pi.py +24 -24
  77. package/vision/install.sh +34 -34
  78. package/vision/motor_server.py +275 -275
  79. package/vision/requirements_camera.txt +6 -6
  80. package/vision/requirements_motor.txt +4 -4
  81. package/vision/requirements_pi_unified.txt +2 -2
  82. package/vision/requirements_vision_agent.txt +19 -19
  83. package/vision/run.sh +244 -244
  84. package/vision/services/services.sh +12 -12
  85. package/dist/kernel/types.js +0 -7
  86. package/dist/robopark/access.js +0 -99
  87. package/dist/robopark/control-center-html.js +0 -9191
  88. package/dist/robopark/control-server.js +0 -148
  89. package/dist/robopark/deployment-commands.js +0 -47
  90. package/dist/robopark/standalone.js +0 -562
  91. package/dist/robopark/voice-join-html.js +0 -57
  92. package/scripts/windows-shim-fix.cjs +0 -58
  93. package/static/robopark/barracuda.png +0 -0
  94. package/static/robopark/bmw.png +0 -0
  95. package/static/robopark/jaguar.png +0 -0
  96. package/static/robopark/magnus.jpg +0 -0
  97. package/static/robopark/panda.png +0 -0
  98. package/static/robopark/tesla.png +0 -0
  99. package/static/robopark/titan.jpg +0 -0
  100. package/static/robopark/volt.png +0 -0
  101. package/static/vendor/elevenlabs-client.LICENSE +0 -21
package/README.md CHANGED
@@ -1,95 +1,66 @@
1
- # RoboPark
2
-
3
- RoboPark is the standalone runtime for a fleet of camera- and voice-enabled
4
- characters. It includes the gateway dashboard, durable scheduler, device
5
- pairing, LiveKit camera/audio publisher, ElevenLabs session integration, and a
6
- cross-platform supervisor. It does not require an InfiniCode installation or a
7
- source checkout.
8
-
9
- ## Install
10
-
11
- ```sh
12
- npm install -g robopark
13
- ```
14
-
15
- Node.js 20+ and Python 3.10+ are required. RoboPark creates an isolated Python
16
- environment in `~/.robopark/venv` and installs the pinned packaged media
17
- dependencies on first use.
18
-
19
- ## Three-command setup
20
-
21
- On the gateway:
22
-
23
- ```sh
24
- robopark --password '<activation-password>' gateway start --public-url https://robopark.example.com
25
- ```
26
-
27
- `gateway start` owns both RoboPark surfaces:
28
-
29
- - Full Park Control Center: port 47913
30
- - Private scheduler/API service: port 8080
31
-
32
- InfiniCode is not required to render or operate the Park UI.
33
-
34
- The gateway prints a complete connection command. Run it once on a device:
35
-
36
- ```sh
37
- robopark connect rp1_<token>
38
- ```
39
-
40
- Then persist the desired media runtime:
41
-
42
- ```sh
43
- robopark start --voice --video --character vixen
44
- ```
45
-
46
- Print the gateway command and every verified production bot command at any
47
- time:
48
-
49
- ```sh
50
- robopark commands
51
- robopark commands --token rp1_<token> --public-url https://gateway.example.com
52
- ```
53
-
54
- The packaged production bindings are Barracuda, Jaguar, Magnus, Palladin,
55
- Panda, Ronin, Titan, Vixen, and Volt. Panda and Ronin intentionally remain
56
- separate robot identities while sharing their recovered ElevenLabs agent.
57
-
58
- `start` writes durable desired state and registers an OS supervisor:
59
-
60
- - Linux: systemd with `Restart=always`
61
- - Windows: Task Scheduler with restart-on-failure
62
- - macOS: launchd with `KeepAlive`
63
-
64
- The supervisor also watches the child media process and gateway heartbeat. A
65
- crash receives exponential-backoff restart; a live-but-stalled worker is
66
- recycled after repeated stale heartbeats. A gateway outage does not create a
67
- restart storm: the media worker keeps its device identity and reconnects.
68
-
69
- Use `robopark start --foreground` in development and `robopark status` to read
70
- the local supervisor state.
71
-
72
- ## Data and logs
73
-
74
- Durable device credentials, desired state, runtime status, logs, and the Python
75
- environment live under `~/.robopark`. Gateway data defaults to
76
- `~/.robopark/scheduler`, so upgrading or reinstalling the npm package does not
77
- replace fleet state.
78
-
79
- ## Package boundary
80
-
81
- RoboPark owns device connectivity, camera/audio, sessions, transcripts, and the
82
- operator gateway. InfiniCode is an optional management/orchestration layer and
83
- is not a runtime dependency.
84
-
85
- The 3.0 artifact deliberately preserves the current scheduler, Pi client,
86
- ElevenLabs conversation worker, camera/vision service, screen relay, motor
87
- bridge, configuration filenames, and service names. Existing enrolled robots
88
- are grandfathered on upgrade and continue using their current device identity
89
- and `~/.robopark` state without an activation interruption. New gateways require
90
- one-time activation; a valid gateway pairing token activates a new robot only
91
- after enrollment succeeds.
92
-
93
- Publish this package with private npm access. The runtime activation gate
94
- prevents accidental use, but it does not encrypt a tarball after someone has
95
- downloaded it.
1
+ # robopark
2
+
3
+ Production architecture, device locks, verified stages, and incident memory
4
+ are recorded in [`../../docs/ROBOPARK_PRODUCTION_MEMORY.md`](../../docs/ROBOPARK_PRODUCTION_MEMORY.md).
5
+
6
+ The **RoboPark fleet control CLI** set up, watch, and drive a room full of
7
+ talking robots from one command. `robopark` is the operator front-end; it rides
8
+ the [`infinicode`](https://www.npmjs.com/package/infinicode) device mesh, which
9
+ it installs as a dependency. You install and think in one name — everything else
10
+ is plumbing.
11
+
12
+ ## Install
13
+
14
+ ```sh
15
+ npm install -g robopark
16
+ ```
17
+
18
+ ## The whole setup — two commands
19
+
20
+ Operators think in **scheduler / robot / laptop**; the mesh underneath thinks in
21
+ hub / satellite / peer. `robopark` translates, and each role turns on the right
22
+ defaults automatically.
23
+
24
+ ```sh
25
+ # On the on-site hub (LiveKit Server 1) — LAN + Tailscale + dashboard on:
26
+ robopark setup --scheduler --gateway ws://<infinibot-gateway>:18789 --start
27
+
28
+ # On each robot Pi — accept-only, LAN-discovered:
29
+ robopark setup --robot --name robopanda --start
30
+
31
+ # From anywhere — a live table of the whole fleet:
32
+ robopark fleet --watch
33
+ ```
34
+
35
+ Run `robopark setup` with no role for a guided wizard.
36
+
37
+ ## Commands
38
+
39
+ | Command | Does |
40
+ |---|---|
41
+ | `robopark setup` | Configure this device's role + site and (with `--start`) launch its node. |
42
+ | `robopark fleet [--watch]` | Live table of every node the mesh can see. |
43
+ | `robopark run <node> <cmd>` | Run a command on one node (use `.` for the local node). |
44
+ | `robopark apply` | Publish this hub's providers / keys / policy to every satellite. |
45
+ | `robopark dashboard [--open]` | Open the web control panel served by the hub. |
46
+
47
+ ## How it fits together
48
+
49
+ ```
50
+ you ── robopark ──▶ infinicode nodes (the mesh) ──▶ InfiniBot (watch)
51
+ └──▶ web dashboard :47913 (watch / drive)
52
+ ```
53
+
54
+ - **robopark** the remote control. A CLI, no daemon. Writes config and calls
55
+ each node's HTTP API.
56
+ - **infinicode** the runtime. `infinicode serve` runs on every device, forms
57
+ the mesh, runs agents, streams telemetry, and serves the dashboard.
58
+ - **InfiniBot** the cockpit. Each node pushes its status *up* to InfiniBot;
59
+ you watch there (or in the built-in dashboard).
60
+
61
+ `robopark` never talks to InfiniBot directly — it drives infinicode nodes, and
62
+ those surface in InfiniBot.
63
+
64
+ ## License
65
+
66
+ MIT
package/bin/robopark.js CHANGED
@@ -1,7 +1,14 @@
1
1
  #!/usr/bin/env node
2
+ /**
3
+ * robopark — fleet control CLI.
4
+ *
5
+ * Unlike the previous release, this is not a wrapper: the CLI ships in this
6
+ * package and has no infinicode dependency. `robopark serve` starts the
7
+ * scheduler (scheduler/main.py) and the control UI directly.
8
+ */
2
9
  import('../dist/robopark-cli.js').catch((err) => {
3
- console.error('robopark: could not load its packaged runtime.');
10
+ console.error('robopark: failed to start.');
4
11
  console.error(err && err.message ? err.message : err);
5
- console.error('Try reinstalling: npm install -g robopark');
12
+ console.error('If this is a source checkout, build it first: npm install && npm run build');
6
13
  process.exit(1);
7
14
  });