foodforthought-cli 0.2.1__tar.gz → 0.2.3__tar.gz
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.
- foodforthought_cli-0.2.3/PKG-INFO +300 -0
- foodforthought_cli-0.2.3/README.md +254 -0
- {foodforthought_cli-0.2.1 → foodforthought_cli-0.2.3}/ate/__init__.py +1 -1
- foodforthought_cli-0.2.3/ate/bridge_server.py +622 -0
- foodforthought_cli-0.2.3/ate/cli.py +4148 -0
- foodforthought_cli-0.2.3/ate/compatibility.py +580 -0
- foodforthought_cli-0.2.3/ate/generators/__init__.py +19 -0
- foodforthought_cli-0.2.3/ate/generators/docker_generator.py +461 -0
- foodforthought_cli-0.2.3/ate/generators/hardware_config.py +469 -0
- foodforthought_cli-0.2.3/ate/generators/ros2_generator.py +617 -0
- foodforthought_cli-0.2.3/ate/generators/skill_generator.py +783 -0
- foodforthought_cli-0.2.3/ate/marketplace.py +524 -0
- {foodforthought_cli-0.2.1 → foodforthought_cli-0.2.3}/ate/mcp_server.py +1341 -107
- foodforthought_cli-0.2.3/ate/primitives.py +1016 -0
- foodforthought_cli-0.2.3/ate/robot_setup.py +2222 -0
- foodforthought_cli-0.2.3/ate/skill_schema.py +537 -0
- foodforthought_cli-0.2.3/ate/telemetry/__init__.py +33 -0
- foodforthought_cli-0.2.3/ate/telemetry/cli.py +455 -0
- foodforthought_cli-0.2.3/ate/telemetry/collector.py +444 -0
- foodforthought_cli-0.2.3/ate/telemetry/context.py +318 -0
- foodforthought_cli-0.2.3/ate/telemetry/fleet_agent.py +419 -0
- foodforthought_cli-0.2.3/ate/telemetry/formats/__init__.py +18 -0
- foodforthought_cli-0.2.3/ate/telemetry/formats/hdf5_serializer.py +503 -0
- foodforthought_cli-0.2.3/ate/telemetry/formats/mcap_serializer.py +457 -0
- foodforthought_cli-0.2.3/ate/telemetry/types.py +334 -0
- foodforthought_cli-0.2.3/foodforthought_cli.egg-info/PKG-INFO +300 -0
- foodforthought_cli-0.2.3/foodforthought_cli.egg-info/SOURCES.txt +48 -0
- foodforthought_cli-0.2.3/foodforthought_cli.egg-info/requires.txt +9 -0
- foodforthought_cli-0.2.3/foodforthought_cli.egg-info/top_level.txt +6 -0
- foodforthought_cli-0.2.3/mechdog_labeled/__init__.py +3 -0
- foodforthought_cli-0.2.3/mechdog_labeled/primitives.py +113 -0
- foodforthought_cli-0.2.3/mechdog_labeled/servo_map.py +209 -0
- foodforthought_cli-0.2.3/mechdog_output/__init__.py +3 -0
- foodforthought_cli-0.2.3/mechdog_output/primitives.py +59 -0
- foodforthought_cli-0.2.3/mechdog_output/servo_map.py +203 -0
- {foodforthought_cli-0.2.1 → foodforthought_cli-0.2.3}/setup.py +11 -1
- foodforthought_cli-0.2.3/test_autodetect/__init__.py +3 -0
- foodforthought_cli-0.2.3/test_autodetect/primitives.py +113 -0
- foodforthought_cli-0.2.3/test_autodetect/servo_map.py +209 -0
- foodforthought_cli-0.2.3/test_full_auto/__init__.py +3 -0
- foodforthought_cli-0.2.3/test_full_auto/primitives.py +113 -0
- foodforthought_cli-0.2.3/test_full_auto/servo_map.py +209 -0
- foodforthought_cli-0.2.3/test_smart_detect/__init__.py +3 -0
- foodforthought_cli-0.2.3/test_smart_detect/primitives.py +113 -0
- foodforthought_cli-0.2.3/test_smart_detect/servo_map.py +209 -0
- foodforthought_cli-0.2.3/tests/test_auth.py +89 -0
- foodforthought_cli-0.2.1/PKG-INFO +0 -151
- foodforthought_cli-0.2.1/README.md +0 -112
- foodforthought_cli-0.2.1/ate/cli.py +0 -1765
- foodforthought_cli-0.2.1/foodforthought_cli.egg-info/PKG-INFO +0 -151
- foodforthought_cli-0.2.1/foodforthought_cli.egg-info/SOURCES.txt +0 -12
- foodforthought_cli-0.2.1/foodforthought_cli.egg-info/requires.txt +0 -1
- foodforthought_cli-0.2.1/foodforthought_cli.egg-info/top_level.txt +0 -1
- {foodforthought_cli-0.2.1 → foodforthought_cli-0.2.3}/ate/generator.py +0 -0
- {foodforthought_cli-0.2.1 → foodforthought_cli-0.2.3}/foodforthought_cli.egg-info/dependency_links.txt +0 -0
- {foodforthought_cli-0.2.1 → foodforthought_cli-0.2.3}/foodforthought_cli.egg-info/entry_points.txt +0 -0
- {foodforthought_cli-0.2.1 → foodforthought_cli-0.2.3}/setup.cfg +0 -0
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: foodforthought-cli
|
|
3
|
+
Version: 0.2.3
|
|
4
|
+
Summary: CLI tool for FoodforThought robotics repository platform - manage robot skills and data
|
|
5
|
+
Home-page: https://kindly.fyi/foodforthought
|
|
6
|
+
Author: Kindly Robotics
|
|
7
|
+
Author-email: hello@kindly.fyi
|
|
8
|
+
Project-URL: Homepage, https://kindly.fyi
|
|
9
|
+
Project-URL: Documentation, https://kindly.fyi/foodforthought/cli
|
|
10
|
+
Project-URL: Source, https://github.com/kindlyrobotics/monorepo
|
|
11
|
+
Project-URL: Bug Tracker, https://github.com/kindlyrobotics/monorepo/issues
|
|
12
|
+
Keywords: robotics,robot-skills,machine-learning,data-management,cli
|
|
13
|
+
Classifier: Development Status :: 3 - Alpha
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: Intended Audience :: Science/Research
|
|
16
|
+
Classifier: Topic :: Software Development :: Version Control
|
|
17
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
18
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
19
|
+
Classifier: Programming Language :: Python :: 3
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
24
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
25
|
+
Requires-Python: >=3.8
|
|
26
|
+
Description-Content-Type: text/markdown
|
|
27
|
+
Requires-Dist: requests>=2.28.0
|
|
28
|
+
Provides-Extra: robot-setup
|
|
29
|
+
Requires-Dist: pyserial>=3.5; extra == "robot-setup"
|
|
30
|
+
Requires-Dist: anthropic>=0.18.0; extra == "robot-setup"
|
|
31
|
+
Provides-Extra: all
|
|
32
|
+
Requires-Dist: pyserial>=3.5; extra == "all"
|
|
33
|
+
Requires-Dist: anthropic>=0.18.0; extra == "all"
|
|
34
|
+
Dynamic: author
|
|
35
|
+
Dynamic: author-email
|
|
36
|
+
Dynamic: classifier
|
|
37
|
+
Dynamic: description
|
|
38
|
+
Dynamic: description-content-type
|
|
39
|
+
Dynamic: home-page
|
|
40
|
+
Dynamic: keywords
|
|
41
|
+
Dynamic: project-url
|
|
42
|
+
Dynamic: provides-extra
|
|
43
|
+
Dynamic: requires-dist
|
|
44
|
+
Dynamic: requires-python
|
|
45
|
+
Dynamic: summary
|
|
46
|
+
|
|
47
|
+
# FoodforThought CLI
|
|
48
|
+
|
|
49
|
+
GitHub-like CLI tool for the FoodforThought robotics repository platform.
|
|
50
|
+
|
|
51
|
+
**Version**: 0.2.1
|
|
52
|
+
**PyPI**: https://pypi.org/project/foodforthought-cli/
|
|
53
|
+
|
|
54
|
+
## Installation
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
pip install foodforthought-cli
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Or install from source:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
cd foodforthought-cli
|
|
64
|
+
pip install -e .
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Configuration
|
|
68
|
+
|
|
69
|
+
Set environment variables:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
export ATE_API_URL="https://kindly.fyi/api"
|
|
73
|
+
export ATE_API_KEY="your-api-key-here"
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## Usage
|
|
77
|
+
|
|
78
|
+
### Initialize a repository
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
ate init my-robot-skill -d "A skill for my robot" -v public
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Clone a repository
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
ate clone <repository-id>
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Create a commit
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
ate commit -m "Add new control algorithm"
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Push to remote
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
ate push -b main
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Deploy to robot
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
ate deploy unitree-r1
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Commands
|
|
109
|
+
|
|
110
|
+
### Repository Management
|
|
111
|
+
- `ate init <name>` - Initialize a new repository
|
|
112
|
+
- `ate clone <repo-id>` - Clone a repository
|
|
113
|
+
- `ate commit -m <message>` - Create a commit
|
|
114
|
+
- `ate push [-b <branch>]` - Push commits to remote
|
|
115
|
+
|
|
116
|
+
### Skill Pipeline
|
|
117
|
+
- `ate pull <skill-id> [--robot <robot>] [--format json|rlds|lerobot] [--output ./data]` - Pull skill data for training
|
|
118
|
+
- `ate upload <video-path> --robot <robot> --task <task> [--project <id>]` - Upload demonstrations for labeling
|
|
119
|
+
- `ate check-transfer --from <source-robot> --to <target-robot> [--skill <id>]` - Check skill transfer compatibility
|
|
120
|
+
- `ate labeling-status <job-id>` - Check labeling job status
|
|
121
|
+
|
|
122
|
+
### Parts & Dependencies (New in v0.2.0)
|
|
123
|
+
- `ate parts list [--category gripper]` - List available hardware parts
|
|
124
|
+
- `ate parts check <skill-id>` - Check part compatibility for a skill
|
|
125
|
+
- `ate parts require <part-id> --skill <skill-id>` - Add part dependency to a skill
|
|
126
|
+
- `ate deps audit` - Verify all dependencies are compatible
|
|
127
|
+
|
|
128
|
+
### Text-to-Skill Generation (New in v0.2.0)
|
|
129
|
+
- `ate generate "<description>" --robot <robot> --output ./skill/` - Generate skill skeleton from natural language
|
|
130
|
+
|
|
131
|
+
Example:
|
|
132
|
+
```bash
|
|
133
|
+
ate generate "pick up box and place on pallet" --robot franka-panda --output ./new-skill/
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### Workflow Orchestration (New in v0.2.0)
|
|
137
|
+
- `ate workflow validate <pipeline.yaml>` - Validate a workflow definition
|
|
138
|
+
- `ate workflow run <pipeline.yaml> --sim` - Run workflow in simulation
|
|
139
|
+
- `ate workflow export <pipeline.yaml> --format ros2` - Export to ROS2 launch format
|
|
140
|
+
|
|
141
|
+
### Team Collaboration (New in v0.2.0)
|
|
142
|
+
- `ate team create <name>` - Create a new team
|
|
143
|
+
- `ate team invite <email> --role member` - Invite a member
|
|
144
|
+
- `ate team list` - List teams and members
|
|
145
|
+
- `ate skill share <skill-id> --team <team-slug>` - Share a skill with a team
|
|
146
|
+
|
|
147
|
+
### Skill Compiler (New in v0.2.1)
|
|
148
|
+
|
|
149
|
+
Compile skill.yaml specifications into deployable packages. See [docs/SKILL_COMPILER.md](docs/SKILL_COMPILER.md) for full documentation.
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
# Validate a skill specification
|
|
153
|
+
ate validate-skill my_skill.skill.yaml
|
|
154
|
+
|
|
155
|
+
# Compile to Python package
|
|
156
|
+
ate compile my_skill.skill.yaml --target python --output ./dist
|
|
157
|
+
|
|
158
|
+
# Compile to ROS2 package
|
|
159
|
+
ate compile my_skill.skill.yaml --target ros2 --robot robots/ur5.urdf
|
|
160
|
+
|
|
161
|
+
# Test the compiled skill
|
|
162
|
+
ate test-skill ./dist --mode dry-run
|
|
163
|
+
|
|
164
|
+
# Check robot compatibility
|
|
165
|
+
ate check-compatibility my_skill.skill.yaml --robot-urdf robots/ur5.urdf
|
|
166
|
+
|
|
167
|
+
# Publish to registry
|
|
168
|
+
ate publish-skill ./dist --visibility public
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
**Quick Start for AI Assistants:**
|
|
172
|
+
1. `ate_list_primitives` - Discover available building blocks
|
|
173
|
+
2. `ate_validate_skill_spec` - Check skill.yaml for errors
|
|
174
|
+
3. `ate_check_skill_compatibility` - Verify robot compatibility
|
|
175
|
+
4. `ate_compile_skill` - Generate deployable code
|
|
176
|
+
5. `ate_test_compiled_skill` - Test without a robot
|
|
177
|
+
|
|
178
|
+
### Dataset Management (New in v0.2.0)
|
|
179
|
+
- `ate data upload ./sensor-logs/ --skill <id> --stage raw` - Upload sensor data
|
|
180
|
+
- `ate data list --skill <id> --stage annotated` - List datasets
|
|
181
|
+
- `ate data promote <dataset-id> --to skill-abstracted` - Promote to next stage
|
|
182
|
+
- `ate data export <dataset-id> --format rlds` - Export dataset
|
|
183
|
+
|
|
184
|
+
### Deployment & Configuration (New in v0.2.0)
|
|
185
|
+
- `ate deploy --config deploy.yaml --target fleet-alpha` - Deploy with config
|
|
186
|
+
- `ate deploy status <fleet-name>` - Check deployment status
|
|
187
|
+
|
|
188
|
+
### Deployment & Testing
|
|
189
|
+
- `ate deploy <robot-type>` - Deploy to a robot (e.g., unitree-r1)
|
|
190
|
+
- `ate test [-e gazebo|mujoco|pybullet|webots] [-r robot]` - Test skills in simulation
|
|
191
|
+
- `ate benchmark [-t speed|accuracy|robustness|efficiency|all]` - Run performance benchmarks
|
|
192
|
+
- `ate adapt <source-robot> <target-robot>` - Adapt skills between robots
|
|
193
|
+
|
|
194
|
+
### Safety & Validation
|
|
195
|
+
- `ate validate [-c collision|speed|workspace|force|all]` - Validate safety and compliance
|
|
196
|
+
- `ate stream [start|stop|status] [-s sensors...]` - Stream sensor data
|
|
197
|
+
|
|
198
|
+
## Cursor IDE Integration (MCP)
|
|
199
|
+
|
|
200
|
+
FoodforThought CLI includes a full MCP (Model Context Protocol) server for integration with Cursor IDE.
|
|
201
|
+
|
|
202
|
+
### Quick Install via Deep Link
|
|
203
|
+
|
|
204
|
+
Click this link to install in Cursor:
|
|
205
|
+
```
|
|
206
|
+
cursor://anysphere.cursor-deeplink/mcp/install?name=foodforthought&config=eyJtY3BTZXJ2ZXJzIjogeyJmb29kZm9ydGhvdWdodCI6IHsiY29tbWFuZCI6ICJweXRob24iLCAiYXJncyI6IFsiLW0iLCAiYXRlLm1jcF9zZXJ2ZXIiXSwgImVudiI6IHsiQVRFX0FQSV9VUkwiOiAiaHR0cHM6Ly9raW5kbHkuZnlpL2FwaSJ9fX19
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### Manual Installation
|
|
210
|
+
|
|
211
|
+
1. Install the CLI:
|
|
212
|
+
```bash
|
|
213
|
+
pip install foodforthought-cli
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
2. Install MCP SDK:
|
|
217
|
+
```bash
|
|
218
|
+
pip install mcp
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
3. Add to your Cursor MCP config (`~/.cursor/mcp.json` or `.cursor/mcp.json`):
|
|
222
|
+
```json
|
|
223
|
+
{
|
|
224
|
+
"mcpServers": {
|
|
225
|
+
"foodforthought": {
|
|
226
|
+
"command": "python",
|
|
227
|
+
"args": ["-m", "ate.mcp_server"],
|
|
228
|
+
"env": {
|
|
229
|
+
"ATE_API_URL": "https://kindly.fyi/api"
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
4. Restart Cursor
|
|
237
|
+
|
|
238
|
+
### Available MCP Tools (37+)
|
|
239
|
+
|
|
240
|
+
| Category | Tools |
|
|
241
|
+
|----------|-------|
|
|
242
|
+
| **Skill Compiler** | `ate_compile_skill`, `ate_validate_skill_spec`, `ate_test_compiled_skill`, `ate_publish_compiled_skill`, `ate_check_skill_compatibility` |
|
|
243
|
+
| **Primitives** | `ate_list_primitives`, `ate_get_primitive` |
|
|
244
|
+
| **Skills** | `ate_skills_list`, `ate_skills_create`, `ate_skills_get`, `ate_pull`, `ate_upload` |
|
|
245
|
+
| **Testing** | `ate_test`, `ate_simulate` |
|
|
246
|
+
| **Compatibility** | `ate_adapt`, `ate_compatibility_check` |
|
|
247
|
+
| **Parts** | `ate_parts_list`, `ate_parts_check`, `ate_parts_require`, `ate_deps_audit` |
|
|
248
|
+
| **Generation** | `ate_generate` |
|
|
249
|
+
| **Workflows** | `ate_workflow_validate`, `ate_workflow_run`, `ate_workflow_export` |
|
|
250
|
+
| **Teams** | `ate_team_create`, `ate_team_invite`, `ate_team_list`, `ate_team_share` |
|
|
251
|
+
| **Datasets** | `ate_data_upload`, `ate_data_list`, `ate_data_promote`, `ate_data_export` |
|
|
252
|
+
| **Deployment** | `ate_deploy`, `ate_deploy_status` |
|
|
253
|
+
| **Audit** | `ate_audit_trail` |
|
|
254
|
+
|
|
255
|
+
### MCP Resources
|
|
256
|
+
|
|
257
|
+
- `skill://{id}` - Skill details and configuration
|
|
258
|
+
- `part://{id}` - Hardware part specifications
|
|
259
|
+
- `workflow://{id}` - Workflow definition
|
|
260
|
+
- `team://{id}` - Team information
|
|
261
|
+
- `deployment://{id}` - Deployment status
|
|
262
|
+
- `audit://{id}` - Audit trail
|
|
263
|
+
|
|
264
|
+
### MCP Prompts
|
|
265
|
+
|
|
266
|
+
- `setup_workflow` - Guide for multi-skill workflows
|
|
267
|
+
- `deploy_skill` - Step-by-step deployment guide
|
|
268
|
+
- `debug_compatibility` - Debug skill transfer issues
|
|
269
|
+
- `onboard_robot` - Add a new robot to the platform
|
|
270
|
+
- `audit_deployment` - Generate audit reports
|
|
271
|
+
|
|
272
|
+
See the [MCP Server Guide](../docs/MCP_SERVER_GUIDE.md) for full documentation.
|
|
273
|
+
|
|
274
|
+
## CI/CD Integration
|
|
275
|
+
|
|
276
|
+
### GitHub Actions
|
|
277
|
+
|
|
278
|
+
Use the provided actions for CI/CD:
|
|
279
|
+
|
|
280
|
+
```yaml
|
|
281
|
+
name: Skill CI
|
|
282
|
+
on: [push, pull_request]
|
|
283
|
+
jobs:
|
|
284
|
+
test:
|
|
285
|
+
runs-on: ubuntu-latest
|
|
286
|
+
steps:
|
|
287
|
+
- uses: actions/checkout@v4
|
|
288
|
+
- uses: kindly-robotics/test-skill@v1
|
|
289
|
+
with:
|
|
290
|
+
skill-path: ./
|
|
291
|
+
robot-model: ur5
|
|
292
|
+
- uses: kindly-robotics/check-transfer@v1
|
|
293
|
+
with:
|
|
294
|
+
skill: .
|
|
295
|
+
min-score: 0.6
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
## License
|
|
299
|
+
|
|
300
|
+
Copyright © 2024-2025 Kindly Robotics. All rights reserved.
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
# FoodforThought CLI
|
|
2
|
+
|
|
3
|
+
GitHub-like CLI tool for the FoodforThought robotics repository platform.
|
|
4
|
+
|
|
5
|
+
**Version**: 0.2.1
|
|
6
|
+
**PyPI**: https://pypi.org/project/foodforthought-cli/
|
|
7
|
+
|
|
8
|
+
## Installation
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
pip install foodforthought-cli
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Or install from source:
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
cd foodforthought-cli
|
|
18
|
+
pip install -e .
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Configuration
|
|
22
|
+
|
|
23
|
+
Set environment variables:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
export ATE_API_URL="https://kindly.fyi/api"
|
|
27
|
+
export ATE_API_KEY="your-api-key-here"
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Usage
|
|
31
|
+
|
|
32
|
+
### Initialize a repository
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
ate init my-robot-skill -d "A skill for my robot" -v public
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Clone a repository
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
ate clone <repository-id>
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Create a commit
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
ate commit -m "Add new control algorithm"
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Push to remote
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
ate push -b main
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Deploy to robot
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
ate deploy unitree-r1
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Commands
|
|
63
|
+
|
|
64
|
+
### Repository Management
|
|
65
|
+
- `ate init <name>` - Initialize a new repository
|
|
66
|
+
- `ate clone <repo-id>` - Clone a repository
|
|
67
|
+
- `ate commit -m <message>` - Create a commit
|
|
68
|
+
- `ate push [-b <branch>]` - Push commits to remote
|
|
69
|
+
|
|
70
|
+
### Skill Pipeline
|
|
71
|
+
- `ate pull <skill-id> [--robot <robot>] [--format json|rlds|lerobot] [--output ./data]` - Pull skill data for training
|
|
72
|
+
- `ate upload <video-path> --robot <robot> --task <task> [--project <id>]` - Upload demonstrations for labeling
|
|
73
|
+
- `ate check-transfer --from <source-robot> --to <target-robot> [--skill <id>]` - Check skill transfer compatibility
|
|
74
|
+
- `ate labeling-status <job-id>` - Check labeling job status
|
|
75
|
+
|
|
76
|
+
### Parts & Dependencies (New in v0.2.0)
|
|
77
|
+
- `ate parts list [--category gripper]` - List available hardware parts
|
|
78
|
+
- `ate parts check <skill-id>` - Check part compatibility for a skill
|
|
79
|
+
- `ate parts require <part-id> --skill <skill-id>` - Add part dependency to a skill
|
|
80
|
+
- `ate deps audit` - Verify all dependencies are compatible
|
|
81
|
+
|
|
82
|
+
### Text-to-Skill Generation (New in v0.2.0)
|
|
83
|
+
- `ate generate "<description>" --robot <robot> --output ./skill/` - Generate skill skeleton from natural language
|
|
84
|
+
|
|
85
|
+
Example:
|
|
86
|
+
```bash
|
|
87
|
+
ate generate "pick up box and place on pallet" --robot franka-panda --output ./new-skill/
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Workflow Orchestration (New in v0.2.0)
|
|
91
|
+
- `ate workflow validate <pipeline.yaml>` - Validate a workflow definition
|
|
92
|
+
- `ate workflow run <pipeline.yaml> --sim` - Run workflow in simulation
|
|
93
|
+
- `ate workflow export <pipeline.yaml> --format ros2` - Export to ROS2 launch format
|
|
94
|
+
|
|
95
|
+
### Team Collaboration (New in v0.2.0)
|
|
96
|
+
- `ate team create <name>` - Create a new team
|
|
97
|
+
- `ate team invite <email> --role member` - Invite a member
|
|
98
|
+
- `ate team list` - List teams and members
|
|
99
|
+
- `ate skill share <skill-id> --team <team-slug>` - Share a skill with a team
|
|
100
|
+
|
|
101
|
+
### Skill Compiler (New in v0.2.1)
|
|
102
|
+
|
|
103
|
+
Compile skill.yaml specifications into deployable packages. See [docs/SKILL_COMPILER.md](docs/SKILL_COMPILER.md) for full documentation.
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
# Validate a skill specification
|
|
107
|
+
ate validate-skill my_skill.skill.yaml
|
|
108
|
+
|
|
109
|
+
# Compile to Python package
|
|
110
|
+
ate compile my_skill.skill.yaml --target python --output ./dist
|
|
111
|
+
|
|
112
|
+
# Compile to ROS2 package
|
|
113
|
+
ate compile my_skill.skill.yaml --target ros2 --robot robots/ur5.urdf
|
|
114
|
+
|
|
115
|
+
# Test the compiled skill
|
|
116
|
+
ate test-skill ./dist --mode dry-run
|
|
117
|
+
|
|
118
|
+
# Check robot compatibility
|
|
119
|
+
ate check-compatibility my_skill.skill.yaml --robot-urdf robots/ur5.urdf
|
|
120
|
+
|
|
121
|
+
# Publish to registry
|
|
122
|
+
ate publish-skill ./dist --visibility public
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
**Quick Start for AI Assistants:**
|
|
126
|
+
1. `ate_list_primitives` - Discover available building blocks
|
|
127
|
+
2. `ate_validate_skill_spec` - Check skill.yaml for errors
|
|
128
|
+
3. `ate_check_skill_compatibility` - Verify robot compatibility
|
|
129
|
+
4. `ate_compile_skill` - Generate deployable code
|
|
130
|
+
5. `ate_test_compiled_skill` - Test without a robot
|
|
131
|
+
|
|
132
|
+
### Dataset Management (New in v0.2.0)
|
|
133
|
+
- `ate data upload ./sensor-logs/ --skill <id> --stage raw` - Upload sensor data
|
|
134
|
+
- `ate data list --skill <id> --stage annotated` - List datasets
|
|
135
|
+
- `ate data promote <dataset-id> --to skill-abstracted` - Promote to next stage
|
|
136
|
+
- `ate data export <dataset-id> --format rlds` - Export dataset
|
|
137
|
+
|
|
138
|
+
### Deployment & Configuration (New in v0.2.0)
|
|
139
|
+
- `ate deploy --config deploy.yaml --target fleet-alpha` - Deploy with config
|
|
140
|
+
- `ate deploy status <fleet-name>` - Check deployment status
|
|
141
|
+
|
|
142
|
+
### Deployment & Testing
|
|
143
|
+
- `ate deploy <robot-type>` - Deploy to a robot (e.g., unitree-r1)
|
|
144
|
+
- `ate test [-e gazebo|mujoco|pybullet|webots] [-r robot]` - Test skills in simulation
|
|
145
|
+
- `ate benchmark [-t speed|accuracy|robustness|efficiency|all]` - Run performance benchmarks
|
|
146
|
+
- `ate adapt <source-robot> <target-robot>` - Adapt skills between robots
|
|
147
|
+
|
|
148
|
+
### Safety & Validation
|
|
149
|
+
- `ate validate [-c collision|speed|workspace|force|all]` - Validate safety and compliance
|
|
150
|
+
- `ate stream [start|stop|status] [-s sensors...]` - Stream sensor data
|
|
151
|
+
|
|
152
|
+
## Cursor IDE Integration (MCP)
|
|
153
|
+
|
|
154
|
+
FoodforThought CLI includes a full MCP (Model Context Protocol) server for integration with Cursor IDE.
|
|
155
|
+
|
|
156
|
+
### Quick Install via Deep Link
|
|
157
|
+
|
|
158
|
+
Click this link to install in Cursor:
|
|
159
|
+
```
|
|
160
|
+
cursor://anysphere.cursor-deeplink/mcp/install?name=foodforthought&config=eyJtY3BTZXJ2ZXJzIjogeyJmb29kZm9ydGhvdWdodCI6IHsiY29tbWFuZCI6ICJweXRob24iLCAiYXJncyI6IFsiLW0iLCAiYXRlLm1jcF9zZXJ2ZXIiXSwgImVudiI6IHsiQVRFX0FQSV9VUkwiOiAiaHR0cHM6Ly9raW5kbHkuZnlpL2FwaSJ9fX19
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### Manual Installation
|
|
164
|
+
|
|
165
|
+
1. Install the CLI:
|
|
166
|
+
```bash
|
|
167
|
+
pip install foodforthought-cli
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
2. Install MCP SDK:
|
|
171
|
+
```bash
|
|
172
|
+
pip install mcp
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
3. Add to your Cursor MCP config (`~/.cursor/mcp.json` or `.cursor/mcp.json`):
|
|
176
|
+
```json
|
|
177
|
+
{
|
|
178
|
+
"mcpServers": {
|
|
179
|
+
"foodforthought": {
|
|
180
|
+
"command": "python",
|
|
181
|
+
"args": ["-m", "ate.mcp_server"],
|
|
182
|
+
"env": {
|
|
183
|
+
"ATE_API_URL": "https://kindly.fyi/api"
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
4. Restart Cursor
|
|
191
|
+
|
|
192
|
+
### Available MCP Tools (37+)
|
|
193
|
+
|
|
194
|
+
| Category | Tools |
|
|
195
|
+
|----------|-------|
|
|
196
|
+
| **Skill Compiler** | `ate_compile_skill`, `ate_validate_skill_spec`, `ate_test_compiled_skill`, `ate_publish_compiled_skill`, `ate_check_skill_compatibility` |
|
|
197
|
+
| **Primitives** | `ate_list_primitives`, `ate_get_primitive` |
|
|
198
|
+
| **Skills** | `ate_skills_list`, `ate_skills_create`, `ate_skills_get`, `ate_pull`, `ate_upload` |
|
|
199
|
+
| **Testing** | `ate_test`, `ate_simulate` |
|
|
200
|
+
| **Compatibility** | `ate_adapt`, `ate_compatibility_check` |
|
|
201
|
+
| **Parts** | `ate_parts_list`, `ate_parts_check`, `ate_parts_require`, `ate_deps_audit` |
|
|
202
|
+
| **Generation** | `ate_generate` |
|
|
203
|
+
| **Workflows** | `ate_workflow_validate`, `ate_workflow_run`, `ate_workflow_export` |
|
|
204
|
+
| **Teams** | `ate_team_create`, `ate_team_invite`, `ate_team_list`, `ate_team_share` |
|
|
205
|
+
| **Datasets** | `ate_data_upload`, `ate_data_list`, `ate_data_promote`, `ate_data_export` |
|
|
206
|
+
| **Deployment** | `ate_deploy`, `ate_deploy_status` |
|
|
207
|
+
| **Audit** | `ate_audit_trail` |
|
|
208
|
+
|
|
209
|
+
### MCP Resources
|
|
210
|
+
|
|
211
|
+
- `skill://{id}` - Skill details and configuration
|
|
212
|
+
- `part://{id}` - Hardware part specifications
|
|
213
|
+
- `workflow://{id}` - Workflow definition
|
|
214
|
+
- `team://{id}` - Team information
|
|
215
|
+
- `deployment://{id}` - Deployment status
|
|
216
|
+
- `audit://{id}` - Audit trail
|
|
217
|
+
|
|
218
|
+
### MCP Prompts
|
|
219
|
+
|
|
220
|
+
- `setup_workflow` - Guide for multi-skill workflows
|
|
221
|
+
- `deploy_skill` - Step-by-step deployment guide
|
|
222
|
+
- `debug_compatibility` - Debug skill transfer issues
|
|
223
|
+
- `onboard_robot` - Add a new robot to the platform
|
|
224
|
+
- `audit_deployment` - Generate audit reports
|
|
225
|
+
|
|
226
|
+
See the [MCP Server Guide](../docs/MCP_SERVER_GUIDE.md) for full documentation.
|
|
227
|
+
|
|
228
|
+
## CI/CD Integration
|
|
229
|
+
|
|
230
|
+
### GitHub Actions
|
|
231
|
+
|
|
232
|
+
Use the provided actions for CI/CD:
|
|
233
|
+
|
|
234
|
+
```yaml
|
|
235
|
+
name: Skill CI
|
|
236
|
+
on: [push, pull_request]
|
|
237
|
+
jobs:
|
|
238
|
+
test:
|
|
239
|
+
runs-on: ubuntu-latest
|
|
240
|
+
steps:
|
|
241
|
+
- uses: actions/checkout@v4
|
|
242
|
+
- uses: kindly-robotics/test-skill@v1
|
|
243
|
+
with:
|
|
244
|
+
skill-path: ./
|
|
245
|
+
robot-model: ur5
|
|
246
|
+
- uses: kindly-robotics/check-transfer@v1
|
|
247
|
+
with:
|
|
248
|
+
skill: .
|
|
249
|
+
min-score: 0.6
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
## License
|
|
253
|
+
|
|
254
|
+
Copyright © 2024-2025 Kindly Robotics. All rights reserved.
|