vectorclaw-mcp 1.0.0__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.
- vectorclaw_mcp-1.0.0/.devcontainer/Dockerfile +7 -0
- vectorclaw_mcp-1.0.0/.devcontainer/devcontainer.json +17 -0
- vectorclaw_mcp-1.0.0/.editorconfig +12 -0
- vectorclaw_mcp-1.0.0/.gitattributes +7 -0
- vectorclaw_mcp-1.0.0/.github/CODEOWNERS +2 -0
- vectorclaw_mcp-1.0.0/.github/ISSUE_TEMPLATE/bug_report.yml +57 -0
- vectorclaw_mcp-1.0.0/.github/ISSUE_TEMPLATE/config.yml +5 -0
- vectorclaw_mcp-1.0.0/.github/ISSUE_TEMPLATE/feature_request.yml +33 -0
- vectorclaw_mcp-1.0.0/.github/copilot-instructions.md +55 -0
- vectorclaw_mcp-1.0.0/.github/dependabot.yml +19 -0
- vectorclaw_mcp-1.0.0/.github/pull_request_template.md +17 -0
- vectorclaw_mcp-1.0.0/.github/workflows/ci.yml +61 -0
- vectorclaw_mcp-1.0.0/.github/workflows/codeql.yml +41 -0
- vectorclaw_mcp-1.0.0/.github/workflows/devcontainer-ci.yml +30 -0
- vectorclaw_mcp-1.0.0/.github/workflows/release-testpypi.yml +33 -0
- vectorclaw_mcp-1.0.0/.github/workflows/release.yml +30 -0
- vectorclaw_mcp-1.0.0/.gitignore +21 -0
- vectorclaw_mcp-1.0.0/.vscode/settings.json +3 -0
- vectorclaw_mcp-1.0.0/CHANGELOG.md +31 -0
- vectorclaw_mcp-1.0.0/CODE_OF_CONDUCT.md +55 -0
- vectorclaw_mcp-1.0.0/CONTRIBUTING.md +62 -0
- vectorclaw_mcp-1.0.0/LICENSE +21 -0
- vectorclaw_mcp-1.0.0/PKG-INFO +293 -0
- vectorclaw_mcp-1.0.0/README.md +252 -0
- vectorclaw_mcp-1.0.0/RELEASE_HANDOFF.md +131 -0
- vectorclaw_mcp-1.0.0/ROADMAP.md +256 -0
- vectorclaw_mcp-1.0.0/SECURITY.md +28 -0
- vectorclaw_mcp-1.0.0/docs/HARDWARE_SMOKE_EMPIRICAL_TEST_TEMPLATE.md +126 -0
- vectorclaw_mcp-1.0.0/docs/HARDWARE_SMOKE_LOG.md +201 -0
- vectorclaw_mcp-1.0.0/docs/HARDWARE_TEST_PLAYBOOK.md +217 -0
- vectorclaw_mcp-1.0.0/docs/HARDWARE_VALIDATION_2026-02-26.md +45 -0
- vectorclaw_mcp-1.0.0/docs/MCP_API_REFERENCE.md +477 -0
- vectorclaw_mcp-1.0.0/docs/ONBOARDING_QUICKSTART.md +57 -0
- vectorclaw_mcp-1.0.0/docs/OPENCLAW_SETUP_SKILL.md +180 -0
- vectorclaw_mcp-1.0.0/docs/OPENCLAW_SKILL_PLAN.md +64 -0
- vectorclaw_mcp-1.0.0/docs/PRE_RELEASE_CHECKLIST.md +180 -0
- vectorclaw_mcp-1.0.0/docs/RELEASE_NOTES_V1_RC_DRAFT.md +47 -0
- vectorclaw_mcp-1.0.0/docs/RUNTIME_SUPPORT.md +33 -0
- vectorclaw_mcp-1.0.0/docs/SDK_AUDIT_PHASE1.md +438 -0
- vectorclaw_mcp-1.0.0/docs/SDK_PATCH_NOTES.md +21 -0
- vectorclaw_mcp-1.0.0/docs/SDK_STRATEGY.md +18 -0
- vectorclaw_mcp-1.0.0/docs/SDK_TO_MCP_COVERAGE_MATRIX.md +43 -0
- vectorclaw_mcp-1.0.0/docs/SECURITY_ARCHITECTURE.md +241 -0
- vectorclaw_mcp-1.0.0/docs/SESSION_FORENSICS_LEDGER_2026-02-26_to_2026-02-27.md +69 -0
- vectorclaw_mcp-1.0.0/docs/SETUP.md +509 -0
- vectorclaw_mcp-1.0.0/docs/TOOL_DOCKING_PREREQUISITES.md +26 -0
- vectorclaw_mcp-1.0.0/docs/TROUBLESHOOTING.md +53 -0
- vectorclaw_mcp-1.0.0/docs/VECTOR_SDK_REFERENCE.md +1820 -0
- vectorclaw_mcp-1.0.0/docs/WIREPOD_SDK_IMPLEMENTATION_GUIDE.md +116 -0
- vectorclaw_mcp-1.0.0/docs/WIREPOD_SDK_MCP_INTEGRATION_PRIORITIES.md +134 -0
- vectorclaw_mcp-1.0.0/docs/WIREPOD_SDK_SURFACE_REFERENCE.md +2003 -0
- vectorclaw_mcp-1.0.0/docs/research/HARDWARE_SMOKE_REPORT_2026-02-28.md +127 -0
- vectorclaw_mcp-1.0.0/docs/research/RELEASE_DECISION_MATRIX_2026-02-28.md +127 -0
- vectorclaw_mcp-1.0.0/docs/research/SDK_SEMANTICS_COMPARISON.md +161 -0
- vectorclaw_mcp-1.0.0/docs/research/SDK_SEMANTICS_RESEARCH.md +449 -0
- vectorclaw_mcp-1.0.0/hardware_test_2026-02-28/capture_144236.jpg +0 -0
- vectorclaw_mcp-1.0.0/hardware_test_2026-02-28/look_153359.jpg +0 -0
- vectorclaw_mcp-1.0.0/hardware_test_2026-02-28/look_mvp_154158.jpg +0 -0
- vectorclaw_mcp-1.0.0/hardware_test_2026-02-28/look_verify_154440.jpg +0 -0
- vectorclaw_mcp-1.0.0/hardware_test_2026-02-28/test_results.json +27 -0
- vectorclaw_mcp-1.0.0/issue-pose-not-fully-functional.md +31 -0
- vectorclaw_mcp-1.0.0/pr129_body.md +18 -0
- vectorclaw_mcp-1.0.0/pr_planning_body.md +19 -0
- vectorclaw_mcp-1.0.0/pyproject.toml +38 -0
- vectorclaw_mcp-1.0.0/skill/README.md +36 -0
- vectorclaw_mcp-1.0.0/skill/SKILL.md +145 -0
- vectorclaw_mcp-1.0.0/src/vectorclaw_mcp/__init__.py +3 -0
- vectorclaw_mcp-1.0.0/src/vectorclaw_mcp/__main__.py +5 -0
- vectorclaw_mcp-1.0.0/src/vectorclaw_mcp/compat.py +149 -0
- vectorclaw_mcp-1.0.0/src/vectorclaw_mcp/robot.py +168 -0
- vectorclaw_mcp-1.0.0/src/vectorclaw_mcp/server.py +115 -0
- vectorclaw_mcp-1.0.0/src/vectorclaw_mcp/setup_skill.py +533 -0
- vectorclaw_mcp-1.0.0/src/vectorclaw_mcp/tool_registry.py +322 -0
- vectorclaw_mcp-1.0.0/src/vectorclaw_mcp/tools.py +35 -0
- vectorclaw_mcp-1.0.0/src/vectorclaw_mcp/tools_common.py +64 -0
- vectorclaw_mcp-1.0.0/src/vectorclaw_mcp/tools_motion.py +134 -0
- vectorclaw_mcp-1.0.0/src/vectorclaw_mcp/tools_perception.py +245 -0
- vectorclaw_mcp-1.0.0/src/vectorclaw_mcp/tools_speech.py +11 -0
- vectorclaw_mcp-1.0.0/test_hardware_smoke.py +125 -0
- vectorclaw_mcp-1.0.0/tests/conftest.py +99 -0
- vectorclaw_mcp-1.0.0/tests/test_compat.py +244 -0
- vectorclaw_mcp-1.0.0/tests/test_robot_manager.py +252 -0
- vectorclaw_mcp-1.0.0/tests/test_server_error_handling.py +63 -0
- vectorclaw_mcp-1.0.0/tests/test_setup_skill.py +544 -0
- vectorclaw_mcp-1.0.0/tests/test_tool_registry.py +56 -0
- vectorclaw_mcp-1.0.0/tests/test_tools_motion.py +267 -0
- vectorclaw_mcp-1.0.0/tests/test_tools_perception.py +577 -0
- vectorclaw_mcp-1.0.0/uv.lock +1566 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
FROM mcr.microsoft.com/devcontainers/python:3.14-bookworm
|
|
2
|
+
|
|
3
|
+
# Keep image lean but include common build tooling for Python packages.
|
|
4
|
+
RUN rm -f /etc/apt/sources.list.d/yarn.list \
|
|
5
|
+
&& apt-get update \
|
|
6
|
+
&& apt-get install -y --no-install-recommends build-essential \
|
|
7
|
+
&& rm -rf /var/lib/apt/lists/*
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "VectorClaw Dev",
|
|
3
|
+
"build": {
|
|
4
|
+
"dockerfile": "Dockerfile"
|
|
5
|
+
},
|
|
6
|
+
"customizations": {
|
|
7
|
+
"vscode": {
|
|
8
|
+
"extensions": [
|
|
9
|
+
"ms-python.python",
|
|
10
|
+
"ms-python.vscode-pylance",
|
|
11
|
+
"ms-python.debugpy"
|
|
12
|
+
]
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"postCreateCommand": "python -m pip install --upgrade pip && pip install -e .[dev]",
|
|
16
|
+
"remoteUser": "vscode"
|
|
17
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
name: Bug report
|
|
2
|
+
description: Report a reproducible problem in VectorClaw
|
|
3
|
+
title: "bug: "
|
|
4
|
+
labels:
|
|
5
|
+
- bug
|
|
6
|
+
body:
|
|
7
|
+
- type: markdown
|
|
8
|
+
attributes:
|
|
9
|
+
value: |
|
|
10
|
+
Thanks for filing a bug report.
|
|
11
|
+
- type: textarea
|
|
12
|
+
id: summary
|
|
13
|
+
attributes:
|
|
14
|
+
label: Summary
|
|
15
|
+
description: What happened?
|
|
16
|
+
placeholder: Clear and concise description of the issue.
|
|
17
|
+
validations:
|
|
18
|
+
required: true
|
|
19
|
+
- type: textarea
|
|
20
|
+
id: steps
|
|
21
|
+
attributes:
|
|
22
|
+
label: Steps to reproduce
|
|
23
|
+
description: Include exact commands and config when possible.
|
|
24
|
+
placeholder: |
|
|
25
|
+
1. ...
|
|
26
|
+
2. ...
|
|
27
|
+
3. ...
|
|
28
|
+
validations:
|
|
29
|
+
required: true
|
|
30
|
+
- type: textarea
|
|
31
|
+
id: expected
|
|
32
|
+
attributes:
|
|
33
|
+
label: Expected behavior
|
|
34
|
+
validations:
|
|
35
|
+
required: true
|
|
36
|
+
- type: textarea
|
|
37
|
+
id: logs
|
|
38
|
+
attributes:
|
|
39
|
+
label: Logs and traces
|
|
40
|
+
description: Paste relevant logs, traceback, or MCP tool output.
|
|
41
|
+
render: shell
|
|
42
|
+
- type: input
|
|
43
|
+
id: version
|
|
44
|
+
attributes:
|
|
45
|
+
label: VectorClaw version
|
|
46
|
+
placeholder: 0.1.0
|
|
47
|
+
- type: dropdown
|
|
48
|
+
id: environment
|
|
49
|
+
attributes:
|
|
50
|
+
label: Environment
|
|
51
|
+
options:
|
|
52
|
+
- Devcontainer
|
|
53
|
+
- Local Linux
|
|
54
|
+
- Local macOS
|
|
55
|
+
- Local Windows
|
|
56
|
+
- GitHub Actions
|
|
57
|
+
- Other
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
name: Feature request
|
|
2
|
+
description: Suggest an improvement to VectorClaw
|
|
3
|
+
title: "feat: "
|
|
4
|
+
labels:
|
|
5
|
+
- enhancement
|
|
6
|
+
body:
|
|
7
|
+
- type: markdown
|
|
8
|
+
attributes:
|
|
9
|
+
value: |
|
|
10
|
+
Thanks for the suggestion.
|
|
11
|
+
- type: textarea
|
|
12
|
+
id: problem
|
|
13
|
+
attributes:
|
|
14
|
+
label: Problem statement
|
|
15
|
+
description: What user problem are you trying to solve?
|
|
16
|
+
validations:
|
|
17
|
+
required: true
|
|
18
|
+
- type: textarea
|
|
19
|
+
id: proposal
|
|
20
|
+
attributes:
|
|
21
|
+
label: Proposed solution
|
|
22
|
+
description: Describe behavior and API impact.
|
|
23
|
+
validations:
|
|
24
|
+
required: true
|
|
25
|
+
- type: textarea
|
|
26
|
+
id: alternatives
|
|
27
|
+
attributes:
|
|
28
|
+
label: Alternatives considered
|
|
29
|
+
- type: textarea
|
|
30
|
+
id: risks
|
|
31
|
+
attributes:
|
|
32
|
+
label: Risks and safety considerations
|
|
33
|
+
description: Mention robot movement, hardware assumptions, or runtime safety concerns.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Copilot Instructions for VectorClaw
|
|
2
|
+
|
|
3
|
+
## Project Context
|
|
4
|
+
|
|
5
|
+
- This repository provides an MCP server that controls Anki Vector robots.
|
|
6
|
+
- Python package source lives under `src/vectorclaw_mcp`.
|
|
7
|
+
- Tests live under `tests/`.
|
|
8
|
+
|
|
9
|
+
## ⚠️ CRITICAL: SDK Surface Documentation
|
|
10
|
+
|
|
11
|
+
**Before implementing or modifying ANY tool that interacts with the SDK, you MUST:**
|
|
12
|
+
|
|
13
|
+
1. **Read the authoritative SDK surface reference:** `docs/WIREPOD_SDK_SURFACE_REFERENCE.md`
|
|
14
|
+
2. **Verify all property names, method signatures, and behavior against this doc**
|
|
15
|
+
3. **Do NOT assume field names or behavior** — check the reference
|
|
16
|
+
|
|
17
|
+
**During code review, verify:**
|
|
18
|
+
- All SDK property names match the reference doc exactly
|
|
19
|
+
- All method calls use correct signatures from the reference doc
|
|
20
|
+
- All behavior expectations align with SDK documentation
|
|
21
|
+
|
|
22
|
+
**Common mistakes to avoid:**
|
|
23
|
+
- `is_carrying_object` → wrong (use `is_carrying_block`)
|
|
24
|
+
- `is_on_charger_platform` → wrong (use `is_on_charger`)
|
|
25
|
+
- Assuming perception tools work without enabling vision modes
|
|
26
|
+
- Assuming `found_object` in proximity sensor means "distance changed"
|
|
27
|
+
|
|
28
|
+
**When in doubt, search the SDK surface doc first.**
|
|
29
|
+
|
|
30
|
+
## Contribution Defaults
|
|
31
|
+
|
|
32
|
+
- Keep changes minimal and task-focused.
|
|
33
|
+
- Preserve existing public tool names and API behavior unless explicitly requested.
|
|
34
|
+
- Prefer small pure functions where possible.
|
|
35
|
+
- Add or update tests for changed behavior.
|
|
36
|
+
|
|
37
|
+
## Safety and Runtime Constraints
|
|
38
|
+
|
|
39
|
+
- Do not execute robot movement by default in tests.
|
|
40
|
+
- Keep hardware-dependent logic isolated behind interfaces that can be mocked.
|
|
41
|
+
- Avoid adding blocking operations to MCP tool handlers.
|
|
42
|
+
|
|
43
|
+
## Development Workflow
|
|
44
|
+
|
|
45
|
+
- Use the devcontainer setup for consistency.
|
|
46
|
+
- Run `pytest -q` before finalizing.
|
|
47
|
+
- If packaging or dependency metadata changes, validate with `python -m build`.
|
|
48
|
+
|
|
49
|
+
## Documentation
|
|
50
|
+
|
|
51
|
+
When behavior changes, update docs in:
|
|
52
|
+
|
|
53
|
+
- `README.md` for user-facing usage
|
|
54
|
+
- `docs/SETUP.md` for setup/runtime details
|
|
55
|
+
- `ROADMAP.md` only for planning-level updates
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
updates:
|
|
3
|
+
- package-ecosystem: "pip"
|
|
4
|
+
directory: "/"
|
|
5
|
+
schedule:
|
|
6
|
+
interval: "weekly"
|
|
7
|
+
open-pull-requests-limit: 10
|
|
8
|
+
|
|
9
|
+
- package-ecosystem: "docker"
|
|
10
|
+
directory: "/.devcontainer"
|
|
11
|
+
schedule:
|
|
12
|
+
interval: "weekly"
|
|
13
|
+
open-pull-requests-limit: 10
|
|
14
|
+
|
|
15
|
+
- package-ecosystem: "github-actions"
|
|
16
|
+
directory: "/"
|
|
17
|
+
schedule:
|
|
18
|
+
interval: "weekly"
|
|
19
|
+
open-pull-requests-limit: 10
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
## Summary
|
|
2
|
+
|
|
3
|
+
Describe what changed and why.
|
|
4
|
+
|
|
5
|
+
## Changes
|
|
6
|
+
|
|
7
|
+
-
|
|
8
|
+
|
|
9
|
+
## Testing
|
|
10
|
+
|
|
11
|
+
- [ ] `pytest -q`
|
|
12
|
+
- [ ] `python -m build` (if packaging/metadata changed)
|
|
13
|
+
- [ ] Manual verification (if robot-dependent behavior changed)
|
|
14
|
+
|
|
15
|
+
## Notes
|
|
16
|
+
|
|
17
|
+
Include any setup, migration, or follow-up information reviewers should know.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
test:
|
|
13
|
+
name: Test (Python ${{ matrix.python-version }}${{ matrix.experimental && ' – experimental' || '' }})
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
strategy:
|
|
16
|
+
fail-fast: false
|
|
17
|
+
matrix:
|
|
18
|
+
include:
|
|
19
|
+
# Primary supported runtime for VectorClaw v1.0 — must pass.
|
|
20
|
+
- python-version: "3.11"
|
|
21
|
+
experimental: false
|
|
22
|
+
# Experimental — failures are informational only and do not block merges.
|
|
23
|
+
- python-version: "3.12"
|
|
24
|
+
experimental: true
|
|
25
|
+
continue-on-error: ${{ matrix.experimental }}
|
|
26
|
+
|
|
27
|
+
steps:
|
|
28
|
+
- name: Checkout
|
|
29
|
+
uses: actions/checkout@v6
|
|
30
|
+
|
|
31
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
32
|
+
uses: actions/setup-python@v6
|
|
33
|
+
with:
|
|
34
|
+
python-version: ${{ matrix.python-version }}
|
|
35
|
+
|
|
36
|
+
- name: Install package and test dependencies
|
|
37
|
+
run: pip install -e . pytest Pillow
|
|
38
|
+
|
|
39
|
+
- name: Run tests
|
|
40
|
+
run: pytest tests/ -v
|
|
41
|
+
|
|
42
|
+
package:
|
|
43
|
+
name: Build package
|
|
44
|
+
runs-on: ubuntu-latest
|
|
45
|
+
needs: test
|
|
46
|
+
|
|
47
|
+
steps:
|
|
48
|
+
- name: Checkout
|
|
49
|
+
uses: actions/checkout@v6
|
|
50
|
+
|
|
51
|
+
- name: Set up Python
|
|
52
|
+
uses: actions/setup-python@v6
|
|
53
|
+
with:
|
|
54
|
+
python-version: "3.12"
|
|
55
|
+
|
|
56
|
+
- name: Build distribution
|
|
57
|
+
run: |
|
|
58
|
+
python -m pip install --upgrade pip
|
|
59
|
+
pip install build twine
|
|
60
|
+
python -m build
|
|
61
|
+
twine check dist/*
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
name: CodeQL
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
pull_request:
|
|
8
|
+
branches:
|
|
9
|
+
- main
|
|
10
|
+
schedule:
|
|
11
|
+
- cron: "20 4 * * 1"
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
analyze:
|
|
15
|
+
name: Analyze (Python)
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
permissions:
|
|
18
|
+
actions: read
|
|
19
|
+
contents: read
|
|
20
|
+
security-events: write
|
|
21
|
+
|
|
22
|
+
strategy:
|
|
23
|
+
fail-fast: false
|
|
24
|
+
matrix:
|
|
25
|
+
language:
|
|
26
|
+
- python
|
|
27
|
+
|
|
28
|
+
steps:
|
|
29
|
+
- name: Checkout
|
|
30
|
+
uses: actions/checkout@v6
|
|
31
|
+
|
|
32
|
+
- name: Initialize CodeQL
|
|
33
|
+
uses: github/codeql-action/init@v4
|
|
34
|
+
with:
|
|
35
|
+
languages: ${{ matrix.language }}
|
|
36
|
+
|
|
37
|
+
- name: Autobuild
|
|
38
|
+
uses: github/codeql-action/autobuild@v4
|
|
39
|
+
|
|
40
|
+
- name: Perform CodeQL Analysis
|
|
41
|
+
uses: github/codeql-action/analyze@v4
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
name: Dev Container CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
paths:
|
|
8
|
+
- ".devcontainer/**"
|
|
9
|
+
- ".github/workflows/devcontainer-ci.yml"
|
|
10
|
+
pull_request:
|
|
11
|
+
paths:
|
|
12
|
+
- ".devcontainer/**"
|
|
13
|
+
- ".github/workflows/devcontainer-ci.yml"
|
|
14
|
+
workflow_dispatch:
|
|
15
|
+
|
|
16
|
+
jobs:
|
|
17
|
+
build-devcontainer:
|
|
18
|
+
name: Build Dev Container
|
|
19
|
+
runs-on: ubuntu-latest
|
|
20
|
+
|
|
21
|
+
steps:
|
|
22
|
+
- name: Checkout
|
|
23
|
+
uses: actions/checkout@v6
|
|
24
|
+
|
|
25
|
+
- name: Build dev container
|
|
26
|
+
uses: devcontainers/ci@v0.3
|
|
27
|
+
with:
|
|
28
|
+
imageName: ghcr.io/danmartinez78/vectorclaw/devcontainer
|
|
29
|
+
cacheFrom: ghcr.io/danmartinez78/vectorclaw/devcontainer
|
|
30
|
+
push: never
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
name: Release TestPyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
|
|
6
|
+
jobs:
|
|
7
|
+
publish-testpypi:
|
|
8
|
+
runs-on: ubuntu-latest
|
|
9
|
+
permissions:
|
|
10
|
+
id-token: write
|
|
11
|
+
contents: read
|
|
12
|
+
|
|
13
|
+
steps:
|
|
14
|
+
- name: Checkout
|
|
15
|
+
uses: actions/checkout@v6
|
|
16
|
+
|
|
17
|
+
- name: Set up Python
|
|
18
|
+
uses: actions/setup-python@v6
|
|
19
|
+
with:
|
|
20
|
+
python-version: "3.12"
|
|
21
|
+
|
|
22
|
+
- name: Build distribution
|
|
23
|
+
run: |
|
|
24
|
+
python -m pip install --upgrade pip
|
|
25
|
+
pip install build
|
|
26
|
+
python -m build
|
|
27
|
+
|
|
28
|
+
- name: Publish to TestPyPI
|
|
29
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
30
|
+
with:
|
|
31
|
+
repository-url: https://test.pypi.org/legacy/
|
|
32
|
+
skip-existing: true
|
|
33
|
+
verbose: true
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [published]
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
publish:
|
|
9
|
+
runs-on: ubuntu-latest
|
|
10
|
+
permissions:
|
|
11
|
+
id-token: write
|
|
12
|
+
contents: read
|
|
13
|
+
|
|
14
|
+
steps:
|
|
15
|
+
- name: Checkout
|
|
16
|
+
uses: actions/checkout@v6
|
|
17
|
+
|
|
18
|
+
- name: Set up Python
|
|
19
|
+
uses: actions/setup-python@v6
|
|
20
|
+
with:
|
|
21
|
+
python-version: "3.12"
|
|
22
|
+
|
|
23
|
+
- name: Build distribution
|
|
24
|
+
run: |
|
|
25
|
+
python -m pip install --upgrade pip
|
|
26
|
+
pip install build
|
|
27
|
+
python -m build
|
|
28
|
+
|
|
29
|
+
- name: Publish to PyPI
|
|
30
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Python byte-compiled / optimised / DLL files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
|
|
6
|
+
# Distribution / packaging
|
|
7
|
+
dist/
|
|
8
|
+
build/
|
|
9
|
+
*.egg-info/
|
|
10
|
+
.eggs/
|
|
11
|
+
|
|
12
|
+
# Virtual environments
|
|
13
|
+
.venv/
|
|
14
|
+
venv/
|
|
15
|
+
env/
|
|
16
|
+
|
|
17
|
+
# pytest cache
|
|
18
|
+
.pytest_cache/
|
|
19
|
+
|
|
20
|
+
# mypy
|
|
21
|
+
.mypy_cache/
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on Keep a Changelog,
|
|
6
|
+
and this project follows Semantic Versioning.
|
|
7
|
+
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- No notable changes yet.
|
|
13
|
+
|
|
14
|
+
## [0.1.0] - 2026-02-26
|
|
15
|
+
|
|
16
|
+
### Added
|
|
17
|
+
|
|
18
|
+
- Initial MCP server implementation for Anki Vector control.
|
|
19
|
+
- Core robot tools including speech, animation, drive, camera capture, face display, pose, cube actions, and status.
|
|
20
|
+
- TestPyPI publishing workflow (`.github/workflows/release-testpypi.yml`) for safe release validation.
|
|
21
|
+
- Contributor and governance docs (`CONTRIBUTING.md`, `SECURITY.md`, `CODE_OF_CONDUCT.md`, PR/issue templates).
|
|
22
|
+
- GitHub automation for CI, devcontainer validation, release publishing, Dependabot, and CodeQL.
|
|
23
|
+
|
|
24
|
+
### Changed
|
|
25
|
+
|
|
26
|
+
- Repository line-ending policy now enforces LF via `.gitattributes` and `.editorconfig`.
|
|
27
|
+
- Contribution guidance now includes devcontainer-first setup and release process.
|
|
28
|
+
|
|
29
|
+
### Fixed
|
|
30
|
+
|
|
31
|
+
- Normalized line-ending noise in the repository workflow.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Contributor Covenant Code of Conduct
|
|
2
|
+
|
|
3
|
+
## Our Pledge
|
|
4
|
+
|
|
5
|
+
We as members, contributors, and leaders pledge to make participation in our
|
|
6
|
+
community a harassment-free experience for everyone, regardless of age, body
|
|
7
|
+
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
|
8
|
+
identity and expression, level of experience, education, socio-economic status,
|
|
9
|
+
nationality, personal appearance, race, religion, or sexual identity
|
|
10
|
+
and orientation.
|
|
11
|
+
|
|
12
|
+
We pledge to act and interact in ways that contribute to an open, welcoming,
|
|
13
|
+
diverse, inclusive, and healthy community.
|
|
14
|
+
|
|
15
|
+
## Our Standards
|
|
16
|
+
|
|
17
|
+
Examples of behavior that contributes to a positive environment include:
|
|
18
|
+
|
|
19
|
+
- Demonstrating empathy and kindness toward other people
|
|
20
|
+
- Being respectful of differing opinions, viewpoints, and experiences
|
|
21
|
+
- Giving and gracefully accepting constructive feedback
|
|
22
|
+
- Accepting responsibility and apologizing to those affected by our mistakes
|
|
23
|
+
- Focusing on what is best not just for us as individuals, but for the overall community
|
|
24
|
+
|
|
25
|
+
Examples of unacceptable behavior include:
|
|
26
|
+
|
|
27
|
+
- The use of sexualized language or imagery, and sexual attention or advances of any kind
|
|
28
|
+
- Trolling, insulting or derogatory comments, and personal or political attacks
|
|
29
|
+
- Public or private harassment
|
|
30
|
+
- Publishing others' private information, such as a physical or email address, without their explicit permission
|
|
31
|
+
- Other conduct which could reasonably be considered inappropriate in a professional setting
|
|
32
|
+
|
|
33
|
+
## Enforcement Responsibilities
|
|
34
|
+
|
|
35
|
+
Community leaders are responsible for clarifying and enforcing our standards of
|
|
36
|
+
acceptable behavior and will take appropriate and fair corrective action in
|
|
37
|
+
response to any behavior that they deem inappropriate, threatening, offensive,
|
|
38
|
+
or harmful.
|
|
39
|
+
|
|
40
|
+
## Scope
|
|
41
|
+
|
|
42
|
+
This Code of Conduct applies within all community spaces and also applies when
|
|
43
|
+
an individual is officially representing the community in public spaces.
|
|
44
|
+
|
|
45
|
+
## Enforcement
|
|
46
|
+
|
|
47
|
+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
|
48
|
+
reported to the project maintainers at: **conduct@vectorclaw.dev**
|
|
49
|
+
|
|
50
|
+
All complaints will be reviewed and investigated promptly and fairly.
|
|
51
|
+
|
|
52
|
+
## Attribution
|
|
53
|
+
|
|
54
|
+
This Code of Conduct is adapted from the Contributor Covenant, version 2.1:
|
|
55
|
+
https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Contributing to VectorClaw
|
|
2
|
+
|
|
3
|
+
Thanks for helping improve VectorClaw.
|
|
4
|
+
|
|
5
|
+
## Development Environment
|
|
6
|
+
|
|
7
|
+
Use the devcontainer as the default contributor environment:
|
|
8
|
+
|
|
9
|
+
1. Open the repository in VS Code.
|
|
10
|
+
2. Run `Dev Containers: Reopen in Container`.
|
|
11
|
+
3. Wait for setup to complete (`pip install -e .[dev]`).
|
|
12
|
+
|
|
13
|
+
## Local Checks
|
|
14
|
+
|
|
15
|
+
Run these before opening a pull request:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
pytest -q
|
|
19
|
+
python -m build
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Branch and PR Workflow
|
|
23
|
+
|
|
24
|
+
1. Create a feature branch from `dev`.
|
|
25
|
+
2. Keep commits focused and small.
|
|
26
|
+
3. Open a pull request targeting `dev` with a clear summary and testing notes.
|
|
27
|
+
4. Ensure GitHub Actions checks pass.
|
|
28
|
+
5. If behavior changes for users, add an entry under `## [Unreleased]` in `CHANGELOG.md`.
|
|
29
|
+
|
|
30
|
+
## Testing Guidance
|
|
31
|
+
|
|
32
|
+
- Add or update tests for behavior changes.
|
|
33
|
+
- Prefer deterministic unit tests.
|
|
34
|
+
- If a change cannot be fully tested in CI (for example, physical robot behavior), include manual test steps in the PR.
|
|
35
|
+
|
|
36
|
+
## Commit Style
|
|
37
|
+
|
|
38
|
+
Prefer concise Conventional Commit style prefixes:
|
|
39
|
+
|
|
40
|
+
- `feat:` new functionality
|
|
41
|
+
- `fix:` bug fixes
|
|
42
|
+
- `docs:` documentation changes
|
|
43
|
+
- `test:` test-only changes
|
|
44
|
+
- `chore:` maintenance and tooling
|
|
45
|
+
|
|
46
|
+
## Releases
|
|
47
|
+
|
|
48
|
+
Always validate publishing on TestPyPI before publishing to production PyPI.
|
|
49
|
+
|
|
50
|
+
1. Run `.github/workflows/release-testpypi.yml` from GitHub Actions (`workflow_dispatch`).
|
|
51
|
+
2. Verify the package can be installed from TestPyPI.
|
|
52
|
+
3. Publish a GitHub Release to trigger `.github/workflows/release.yml` for real PyPI.
|
|
53
|
+
|
|
54
|
+
Both workflows use Trusted Publishing (OIDC), so configure pending publishers in both PyPI and TestPyPI.
|
|
55
|
+
|
|
56
|
+
Before publishing a release, move relevant `## [Unreleased]` items from `CHANGELOG.md`
|
|
57
|
+
into a new version section and include that summary in GitHub Release notes.
|
|
58
|
+
|
|
59
|
+
## Community and Security
|
|
60
|
+
|
|
61
|
+
- Follow the project Code of Conduct in `CODE_OF_CONDUCT.md`.
|
|
62
|
+
- Report vulnerabilities via `SECURITY.md` instead of public issues.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 danmartinez78
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|