copper-pilot-cli 0.1.6__tar.gz → 0.1.8__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.
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/.gitignore +2 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/CONTRIBUTING.md +1 -1
- copper_pilot_cli-0.1.8/HISTORY.md +217 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/PKG-INFO +21 -10
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/README.md +15 -5
- copper_pilot_cli-0.1.8/VERSION +1 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/docs/cli.md +56 -5
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/docs/development.md +41 -1
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/docs/harness.md +18 -6
- copper_pilot_cli-0.1.8/examples/.gitignore +14 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/examples/001_esp32/.copperpilot/TOOLS.md +1 -1
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/examples/001_esp32/README.md +1 -1
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/.copperpilot/PLANS.md +5 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/.copperpilot/README.md +33 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/.copperpilot/plans/cm5-camera-carrier.plan.md +457 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/.gitignore +16 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/README.md +195 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/assembly_spec.json +2984 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/cm5_camera/3dmodels/CM4.step +3981 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/cm5_camera/3dmodels/CM5.step +3981 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/cm5_camera/3dmodels/Camera_IMX219-D160.step +3827 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/cm5_camera/3dmodels/USB_A_Molex_105057-0001_Vertical.wrl +15 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/cm5_camera/3dmodels/USB_A_vertical.step +1521 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/cm5_camera/CM5.3dshapes/5033981892.stp +49696 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/cm5_camera/CM5.3dshapes/DF40C-100DS.stp +96700 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/cm5_camera/CM5.3dshapes/JTHDA-19F08.STEP +76711 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/cm5_camera/CM5.3dshapes/SRP5030CC.stp +2943 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/cm5_camera/cm5_camera.kicad_dru +4 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/cm5_camera/cm5_camera.kicad_pcb +49990 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/cm5_camera/cm5_camera.kicad_pro +600 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/cm5_camera/cm5_camera.kicad_sch +23368 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/cm5_camera/cm5_camera.kicad_sym +15922 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/cm5_camera/cm5_camera.png +0 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/C_0402_1005Metric.kicad_mod +379 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/C_0805_2012Metric.kicad_mod +379 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/Camera_Module_IMX219-D160.kicad_mod +388 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/Crystal_SMD_3225-4Pin_3.2x2.5mm.kicad_mod +373 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/HDMI_Mini-C_Molex_47151-0001.kicad_mod +415 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/LED_0603_1608Metric.kicad_mod +373 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/L_Bourns_SRP5030CC.kicad_mod +503 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/L_CommonModeChoke_Coilank_ACM1210.kicad_mod +143 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/MOLEX_USB_67298-4090.kicad_mod +310 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/Molex_200528-0150_1x15-1MP_P1.00mm_Horizontal.kicad_mod +428 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/PinHeader_1x03_P2.54mm_Vertical.kicad_mod +317 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/PinHeader_2x20_P2.54mm_Vertical.kicad_mod +470 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/R_0402_1005Metric.kicad_mod +379 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/R_0603_1608Metric.kicad_mod +260 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/Raspberry-Pi-4-Compute-Module.kicad_mod +1646 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/SDCARD_MOLEX_503398-1892.kicad_mod +489 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/SOT-23-5.kicad_mod +442 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/SW_SPST_PTS645Sx43SMTR92.kicad_mod +281 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/TSOT-23-6.kicad_mod +289 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/Texas_DRT-3.kicad_mod +310 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/UQFN-10_1.4x1.8mm_P0.4mm.kicad_mod +403 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/USB_C_Receptacle_GCT_USB4105-xx-A_16P_TopMnt_Horizontal.kicad_mod +338 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/cm5_camera/cm5_camera_bottom.png +0 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/cm5_camera/fp-lib-table +4 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/cm5_camera/sym-lib-table +4 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/generate_3d_models.py +116 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/helper.py +2174 -0
- copper_pilot_cli-0.1.8/examples/002_cm5_camera/main.py +250 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/plugins/copper-pilot/agents/copper-pilot.md +2 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/pyproject.toml +7 -5
- copper_pilot_cli-0.1.8/src/copper_pilot_cli/copper_api.py +77 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/src/copper_pilot_cli/copper_app.py +145 -15
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/src/copper_pilot_cli/copper_auth.py +2 -1
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/src/copper_pilot_cli/copper_graph.py +43 -4
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/src/copper_pilot_cli/copper_main.py +42 -5
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/src/copper_pilot_cli/copper_mcp.py +89 -8
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/src/copper_pilot_cli/copper_protocol.py +127 -18
- copper_pilot_cli-0.1.8/src/copper_pilot_cli/copper_status_events.py +76 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/src/copper_pilot_cli/copper_widgets.py +18 -1
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/src/copper_pilot_cli/deepagents_tools.py +5 -6
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/src/copper_pilot_cli/langchain.py +9 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/src/copper_pilot_cli/sessions.py +3 -3
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/tests/test_auth.py +2 -0
- copper_pilot_cli-0.1.8/tests/test_cm5_camera_example.py +688 -0
- copper_pilot_cli-0.1.8/tests/test_copper_api.py +63 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/tests/test_langchain.py +21 -2
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/tests/test_main.py +15 -1
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/tests/test_mcp.py +84 -2
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/tests/test_protocol.py +129 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/tests/test_release_gates.py +15 -2
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/tests/test_sessions.py +71 -2
- copper_pilot_cli-0.1.8/tests/test_status_events.py +51 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/tests/test_tools.py +29 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/tests/test_tui.py +188 -7
- copper_pilot_cli-0.1.6/HISTORY.md +0 -62
- copper_pilot_cli-0.1.6/VERSION +0 -1
- copper_pilot_cli-0.1.6/src/copper_pilot_cli/copper_api.py +0 -24
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/.claude-plugin/marketplace.json +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/CODE_OF_CONDUCT.md +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/LICENSE +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/NOTICE +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/SECURITY.md +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/SUPPORT.md +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/UPSTREAM.md +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/docs/assets/esp32-mini-1-h4.gif +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/docs/assets/logo-dark.png +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/docs/assets/logo-light.png +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/docs/assets/logo.png +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/examples/001_esp32/.copperpilot/PLANS.md +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/examples/001_esp32/.copperpilot/README.md +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/examples/001_esp32/.copperpilot/plans/esp32-dev-board.plan.md +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/examples/001_esp32/.gitignore +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/examples/001_esp32/esp32/3d-models/SW-SMD_L3.9-W2.9-H2.0-LS4.8.step +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/examples/001_esp32/esp32/3d-models/TYPE-C-31-M-12.step +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/examples/001_esp32/esp32/esp32.kicad_pcb +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/examples/001_esp32/esp32/esp32.kicad_pro +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/examples/001_esp32/esp32/esp32.kicad_sch +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/examples/001_esp32/esp32/esp32.png +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/examples/001_esp32/helper.py +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/examples/001_esp32/main.py +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/plugins/copper-pilot/.claude-plugin/plugin.json +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/plugins/copper-pilot/.mcp.json +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/plugins/copper-pilot/skills/copper-pilot-review/SKILL.md +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/skills/copper-pilot-review/SKILL.md +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/src/copper_pilot_cli/__init__.py +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/src/copper_pilot_cli/__main__.py +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/src/copper_pilot_cli/_upstream/__init__.py +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/src/copper_pilot_cli/_upstream/dcode_0_1_69/PROVENANCE.json +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/src/copper_pilot_cli/_upstream/dcode_0_1_69/__init__.py +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/src/copper_pilot_cli/_upstream/dcode_0_1_69/diff_utils.py +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/src/copper_pilot_cli/_version.py +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/src/copper_pilot_cli/clipboard.py +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/src/copper_pilot_cli/copper_config.py +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/src/copper_pilot_cli/copper_features.py +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/src/copper_pilot_cli/copper_hooks.py +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/src/copper_pilot_cli/copper_preferences.py +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/src/copper_pilot_cli/copper_presentation.py +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/src/copper_pilot_cli/copper_theme.py +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/src/copper_pilot_cli/copper_tools.py +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/src/copper_pilot_cli/copper_update.py +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/src/copper_pilot_cli/copper_workspace.py +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/src/copper_pilot_cli/diagnostics.py +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/src/copper_pilot_cli/media_utils.py +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/src/copper_pilot_cli/py.typed +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/src/copper_pilot_cli/textual_patches.py +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/tests/test_clipboard.py +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/tests/test_e2e.py +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/tests/test_esp32_example.py +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/tests/test_features.py +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/tests/test_live_chat_e2e.py +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/tests/test_plugin_manifest.py +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/tests/test_preferences.py +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/tests/test_presentation.py +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/tests/test_upstream_provenance.py +0 -0
- {copper_pilot_cli-0.1.6 → copper_pilot_cli-0.1.8}/tests/test_workspace.py +0 -0
|
@@ -8,7 +8,7 @@ CopperPilot agent. It is not the desktop app or the hosted backend.
|
|
|
8
8
|
|
|
9
9
|
## Prerequisites
|
|
10
10
|
|
|
11
|
-
- Python 3.
|
|
11
|
+
- Python 3.11 or newer
|
|
12
12
|
- [pip](https://pip.pypa.io/en/stable/)
|
|
13
13
|
- [make](https://www.gnu.org/software/make/) (optional; the same commands are
|
|
14
14
|
listed below)
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
Changelog
|
|
2
|
+
=========
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
(unreleased)
|
|
6
|
+
------------
|
|
7
|
+
|
|
8
|
+
Fix
|
|
9
|
+
~~~
|
|
10
|
+
- Annotate async context managers for ty 0.0.87. [AdityaNG]
|
|
11
|
+
|
|
12
|
+
CI resolves the unpinned ty dependency to 0.0.87, which rejects AsyncIterator returns on asynccontextmanager.
|
|
13
|
+
- Upgrade the pinned Deep Agents runtime to 0.7.19. [AdityaNG]
|
|
14
|
+
|
|
15
|
+
Keep the exact runtime pin while picking up the filesystem and media-handling fixes from 0.7.14.
|
|
16
|
+
- Align the CLI with hosted usage limits. [AdityaNG]
|
|
17
|
+
|
|
18
|
+
Keep blocked turns machine-readable, shrink oversized resumed chats to the desktop frame budget, and report the installed client version.
|
|
19
|
+
|
|
20
|
+
Other
|
|
21
|
+
~~~~~
|
|
22
|
+
- Merge pull request #16 from CopperPilot/update/14_oct_2026. [Aditya]
|
|
23
|
+
|
|
24
|
+
Add Intelligence effort, hosted survey workers, and modal keyboard focus
|
|
25
|
+
- Fix(tests/test_tui.py) [AdityaNG]
|
|
26
|
+
- Feat(src/copper_pilot_cli/copper_status_events.py) [AdityaNG]
|
|
27
|
+
- Merge pull request #3 from
|
|
28
|
+
CopperPilot/dependabot/github_actions/softprops/action-gh-release-3.
|
|
29
|
+
[Aditya]
|
|
30
|
+
|
|
31
|
+
build(deps): bump softprops/action-gh-release from 2 to 3
|
|
32
|
+
- Build(deps): bump softprops/action-gh-release from 2 to 3.
|
|
33
|
+
[dependabot[bot]]
|
|
34
|
+
|
|
35
|
+
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2 to 3.
|
|
36
|
+
- [Release notes](https://github.com/softprops/action-gh-release/releases)
|
|
37
|
+
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
|
|
38
|
+
- [Commits](https://github.com/softprops/action-gh-release/compare/v2...v3)
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
updated-dependencies:
|
|
42
|
+
- dependency-name: softprops/action-gh-release
|
|
43
|
+
dependency-version: '3'
|
|
44
|
+
dependency-type: direct:production
|
|
45
|
+
update-type: version-update:semver-major
|
|
46
|
+
...
|
|
47
|
+
- Merge pull request #4 from CopperPilot/dependabot/pip/websockets-
|
|
48
|
+
gte-15-and-lt-18. [Aditya]
|
|
49
|
+
|
|
50
|
+
build(deps): update websockets requirement from <17,>=15 to >=15,<18
|
|
51
|
+
- Build(deps): update websockets requirement from <17,>=15 to >=15,<18.
|
|
52
|
+
[dependabot[bot]]
|
|
53
|
+
|
|
54
|
+
Updates the requirements on [websockets](https://github.com/python-websockets/websockets) to permit the latest version.
|
|
55
|
+
- [Release notes](https://github.com/python-websockets/websockets/releases)
|
|
56
|
+
- [Commits](https://github.com/python-websockets/websockets/compare/15.0...17.1)
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
updated-dependencies:
|
|
60
|
+
- dependency-name: websockets
|
|
61
|
+
dependency-version: '17.1'
|
|
62
|
+
dependency-type: direct:production
|
|
63
|
+
...
|
|
64
|
+
- Merge pull request #5 from CopperPilot/dependabot/pip/uuid-utils-
|
|
65
|
+
gte-0.12-and-lt-2. [Aditya]
|
|
66
|
+
|
|
67
|
+
build(deps): update uuid-utils requirement from <1,>=0.12 to >=0.12,<2
|
|
68
|
+
- Build(deps): update uuid-utils requirement from <1,>=0.12 to
|
|
69
|
+
>=0.12,<2. [dependabot[bot]]
|
|
70
|
+
|
|
71
|
+
Updates the requirements on [uuid-utils](https://github.com/aminalaee/uuid-utils) to permit the latest version.
|
|
72
|
+
- [Release notes](https://github.com/aminalaee/uuid-utils/releases)
|
|
73
|
+
- [Commits](https://github.com/aminalaee/uuid-utils/compare/0.12.0...1.0.0)
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
updated-dependencies:
|
|
77
|
+
- dependency-name: uuid-utils
|
|
78
|
+
dependency-version: 1.0.0
|
|
79
|
+
dependency-type: direct:production
|
|
80
|
+
...
|
|
81
|
+
- Merge pull request #2 from
|
|
82
|
+
CopperPilot/dependabot/github_actions/actions/setup-python-7. [Aditya]
|
|
83
|
+
|
|
84
|
+
build(deps): bump actions/setup-python from 5 to 7
|
|
85
|
+
- Build(deps): bump actions/setup-python from 5 to 7. [dependabot[bot]]
|
|
86
|
+
|
|
87
|
+
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5 to 7.
|
|
88
|
+
- [Release notes](https://github.com/actions/setup-python/releases)
|
|
89
|
+
- [Commits](https://github.com/actions/setup-python/compare/v5...v7)
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
updated-dependencies:
|
|
93
|
+
- dependency-name: actions/setup-python
|
|
94
|
+
dependency-version: '7'
|
|
95
|
+
dependency-type: direct:production
|
|
96
|
+
update-type: version-update:semver-major
|
|
97
|
+
...
|
|
98
|
+
- Merge pull request #13 from
|
|
99
|
+
CopperPilot/update/deepagents_0_7_19_3_oct. [Aditya]
|
|
100
|
+
|
|
101
|
+
Upgrade the pinned Deep Agents runtime to 0.7.19
|
|
102
|
+
- Merge pull request #1 from
|
|
103
|
+
CopperPilot/dependabot/github_actions/actions/checkout-7. [Aditya]
|
|
104
|
+
|
|
105
|
+
build(deps): bump actions/checkout from 4 to 7
|
|
106
|
+
- Build(deps): bump actions/checkout from 4 to 7. [dependabot[bot]]
|
|
107
|
+
|
|
108
|
+
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 7.
|
|
109
|
+
- [Release notes](https://github.com/actions/checkout/releases)
|
|
110
|
+
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
|
|
111
|
+
- [Commits](https://github.com/actions/checkout/compare/v4...v7)
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
updated-dependencies:
|
|
115
|
+
- dependency-name: actions/checkout
|
|
116
|
+
dependency-version: '7'
|
|
117
|
+
dependency-type: direct:production
|
|
118
|
+
update-type: version-update:semver-major
|
|
119
|
+
...
|
|
120
|
+
- Merge pull request #12 from
|
|
121
|
+
CopperPilot/update/contract_alignment_3_oct. [Aditya]
|
|
122
|
+
|
|
123
|
+
Align the CLI with hosted usage limits
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
0.1.7 (2026-10-03)
|
|
127
|
+
------------------
|
|
128
|
+
- Release: version 0.1.7 🚀 [AdityaNG]
|
|
129
|
+
- Merge pull request #11 from
|
|
130
|
+
CopperPilot/feat/python_versions_support_expansion. [Aditya]
|
|
131
|
+
|
|
132
|
+
Support Python 3.11 and future releases
|
|
133
|
+
- Ci: probe Python 3.15 weekly instead of on pull requests. [AdityaNG]
|
|
134
|
+
|
|
135
|
+
Keep the upstream install failure visible without turning required pull request checks red.
|
|
136
|
+
- Feat(py11) [AdityaNG]
|
|
137
|
+
- Merge pull request #7 from CopperPilot/feat/example_002_cm5_camera.
|
|
138
|
+
[Aditya]
|
|
139
|
+
|
|
140
|
+
feat(examples/002_cm5_camera): add 3D pose audit and generated carrier
|
|
141
|
+
- Fix(examples/002_cm5_camera): render the README PCB as a dimetric 3D
|
|
142
|
+
view. [AdityaNG, Cursor]
|
|
143
|
+
|
|
144
|
+
Use an orthogonal high-quality camera with a slight isometric tilt so the
|
|
145
|
+
hero PNG shows connector height instead of a flat top-down shot.
|
|
146
|
+
- Fix(examples/002_cm5_camera): skip library dirs relative to the
|
|
147
|
+
workspace. [AdityaNG, Cursor]
|
|
148
|
+
|
|
149
|
+
Absolute path parts named tmp (Linux /tmp pytest roots) were skipping the
|
|
150
|
+
entire haystack, so libraries_ready failed on Ubuntu CI.
|
|
151
|
+
- Feat(examples/002_cm5_camera): add 3D pose audit and generated
|
|
152
|
+
carrier. [AdityaNG, Cursor]
|
|
153
|
+
|
|
154
|
+
Lock connector 3D offsets, Module1 pad orientation, and the generated
|
|
155
|
+
KiCad project so the example reproduces NANO-C assembly parity.
|
|
156
|
+
- Feat(examples/002_cm5_camera/main.py): new example. [AdityaNG]
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
0.1.6 (2026-09-18)
|
|
160
|
+
------------------
|
|
161
|
+
- Release: version 0.1.6 🚀 [AdityaNG]
|
|
162
|
+
- Merge pull request #6 from CopperPilot/feat/plugins. [Aditya]
|
|
163
|
+
|
|
164
|
+
feat: add MCP conductor and Claude Code plugin
|
|
165
|
+
- Clarify server restrictions in PR template. [Aditya]
|
|
166
|
+
|
|
167
|
+
Updated checklist item to clarify server restrictions.
|
|
168
|
+
- Feat: add MCP conductor and Claude Code plugin. [AdityaNG, Cursor]
|
|
169
|
+
|
|
170
|
+
Let Claude Code, Cursor, and Codex delegate electronics work to the hosted agent via copper-pilot mcp, a portable review skill, and an in-repo plugin.
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
0.1.5 (2026-09-17)
|
|
174
|
+
------------------
|
|
175
|
+
- Release: version 0.1.5 🚀 [AdityaNG]
|
|
176
|
+
- Fix(README.md) [AdityaNG]
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
0.1.4 (2026-09-17)
|
|
180
|
+
------------------
|
|
181
|
+
- Release: version 0.1.4 🚀 [AdityaNG]
|
|
182
|
+
- Fix(tests/test_release_gates.py) [AdityaNG]
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
0.1.3 (2026-09-17)
|
|
186
|
+
------------------
|
|
187
|
+
- Release: version 0.1.3 🚀 [AdityaNG]
|
|
188
|
+
- Docs. [AdityaNG]
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
0.1.2 (2026-09-17)
|
|
192
|
+
------------------
|
|
193
|
+
- Release: version 0.1.2 🚀 [AdityaNG]
|
|
194
|
+
- Ci(pyproject.toml) [AdityaNG]
|
|
195
|
+
- Fix(tests/test_tui.py) [AdityaNG]
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
0.1.1 (2026-09-17)
|
|
199
|
+
------------------
|
|
200
|
+
- Release: version 0.1.1 🚀 [AdityaNG]
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
0.1.0 (2026-09-17)
|
|
204
|
+
------------------
|
|
205
|
+
- Release: version 0.1.0 🚀 [AdityaNG]
|
|
206
|
+
- Fix(tests/test_release_gates.py) [AdityaNG]
|
|
207
|
+
- Test. [AdityaNG]
|
|
208
|
+
- Docs. [AdityaNG]
|
|
209
|
+
- Docs. [AdityaNG]
|
|
210
|
+
- Example(examples/001_esp32/) [AdityaNG]
|
|
211
|
+
- Makefile. [AdityaNG]
|
|
212
|
+
- Ci. [AdityaNG]
|
|
213
|
+
- Docs. [AdityaNG]
|
|
214
|
+
- Refactor(name) [AdityaNG]
|
|
215
|
+
- Init. [AdityaNG]
|
|
216
|
+
|
|
217
|
+
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: copper-pilot-cli
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.8
|
|
4
4
|
Summary: CopperPilot hosted agent for the terminal and LangChain
|
|
5
5
|
Project-URL: Homepage, https://copperpilot.ai
|
|
6
6
|
Project-URL: Repository, https://github.com/CopperPilot/copper-pilot-cli
|
|
@@ -14,13 +14,14 @@ License-File: NOTICE
|
|
|
14
14
|
Classifier: License :: OSI Approved :: MIT License
|
|
15
15
|
Classifier: Programming Language :: Python :: 3
|
|
16
16
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
18
|
Classifier: Programming Language :: Python :: 3.12
|
|
18
19
|
Classifier: Programming Language :: Python :: 3.13
|
|
19
20
|
Classifier: Programming Language :: Python :: 3.14
|
|
20
|
-
Requires-Python:
|
|
21
|
+
Requires-Python: >=3.11
|
|
21
22
|
Requires-Dist: aiosqlite<1,>=0.22
|
|
22
23
|
Requires-Dist: certifi>=2024.8.30
|
|
23
|
-
Requires-Dist: deepagents==0.7.
|
|
24
|
+
Requires-Dist: deepagents==0.7.19
|
|
24
25
|
Requires-Dist: httpx<1,>=0.28
|
|
25
26
|
Requires-Dist: langchain-core<2,>=1.6
|
|
26
27
|
Requires-Dist: langgraph-checkpoint-sqlite<4,>=3.1
|
|
@@ -34,8 +35,8 @@ Requires-Dist: pyperclip<2,>=1.11
|
|
|
34
35
|
Requires-Dist: pyyaml<7,>=6
|
|
35
36
|
Requires-Dist: rich<16,>=15
|
|
36
37
|
Requires-Dist: textual<9,>=8.2.8
|
|
37
|
-
Requires-Dist: uuid-utils<
|
|
38
|
-
Requires-Dist: websockets<
|
|
38
|
+
Requires-Dist: uuid-utils<2,>=0.12
|
|
39
|
+
Requires-Dist: websockets<18,>=15
|
|
39
40
|
Provides-Extra: dev
|
|
40
41
|
Requires-Dist: build<2,>=1.4; extra == 'dev'
|
|
41
42
|
Requires-Dist: gitchangelog==3.0.4; extra == 'dev'
|
|
@@ -86,9 +87,9 @@ CopperPilot in your terminal: a thin, open-source client for CopperPilot electro
|
|
|
86
87
|
|
|
87
88
|
## Prerequisites
|
|
88
89
|
|
|
89
|
-
- Python 3.
|
|
90
|
+
- Python 3.11 or newer
|
|
90
91
|
- A [CopperPilot](https://copperpilot.ai) account for login
|
|
91
|
-
- KiCad 10 on `PATH` only if you run [`examples/001_esp32`](examples/001_esp32)
|
|
92
|
+
- KiCad 10 on `PATH` only if you run [`examples/001_esp32`](examples/001_esp32) or [`examples/002_cm5_camera`](examples/002_cm5_camera)
|
|
92
93
|
|
|
93
94
|
## Install and run
|
|
94
95
|
|
|
@@ -106,12 +107,18 @@ copper-pilot ./my-board
|
|
|
106
107
|
copper-pilot --resume
|
|
107
108
|
copper-pilot threads list
|
|
108
109
|
copper-pilot -n -m "Review this board" --json
|
|
110
|
+
copper-pilot --mode plan --effort intelligence -m "Survey and plan this board"
|
|
109
111
|
```
|
|
110
112
|
|
|
111
113
|
Both `copper-pilot` and `copper-pilot-cli` run the same program.
|
|
112
114
|
`copper-pilot --help` lists flags; [docs/cli.md](docs/cli.md) is the full
|
|
113
115
|
command reference.
|
|
114
116
|
|
|
117
|
+
Balanced effort is the default. Paid-plan users can select Intelligence with
|
|
118
|
+
`--effort intelligence` or interactive `/effort`. Intelligence uses
|
|
119
|
+
server-owned survey subagents and shows their lifecycle through the existing
|
|
120
|
+
Deep Agents task rows; Intelligence Plan turns survey before writing a plan.
|
|
121
|
+
|
|
115
122
|
## Use from Claude Code, Cursor, or Codex
|
|
116
123
|
|
|
117
124
|
CopperPilot stays the electronics agent. Copy
|
|
@@ -146,13 +153,16 @@ the parent directory is mode `0700` and the file is mode `0600`.
|
|
|
146
153
|
## LangChain
|
|
147
154
|
|
|
148
155
|
```python
|
|
149
|
-
from copper_pilot_cli.copper_protocol import CopperMode
|
|
156
|
+
from copper_pilot_cli.copper_protocol import CopperEffort, CopperMode
|
|
150
157
|
from copper_pilot_cli.langchain import CopperPilotAgent
|
|
151
158
|
from helper import drc_violations, erc_errors, render_pcb, run
|
|
152
159
|
|
|
153
160
|
PLAN = CopperMode.PLAN
|
|
154
161
|
|
|
155
|
-
copper_pilot = CopperPilotAgent(
|
|
162
|
+
copper_pilot = CopperPilotAgent(
|
|
163
|
+
workspace="esp32",
|
|
164
|
+
effort=CopperEffort.INTELLIGENCE,
|
|
165
|
+
)
|
|
156
166
|
|
|
157
167
|
run(copper_pilot, "Build me an ESP32 dev board.", PLAN)
|
|
158
168
|
run(copper_pilot, "Let us build this plan.")
|
|
@@ -170,7 +180,8 @@ Deep Agent. The compatible `deepagents` runtime is installed and pinned by this
|
|
|
170
180
|
package.
|
|
171
181
|
|
|
172
182
|
That snippet is the runnable example in
|
|
173
|
-
[`examples/001_esp32`](examples/001_esp32).
|
|
183
|
+
[`examples/001_esp32`](examples/001_esp32). A phased CM5 camera carrier lives in
|
|
184
|
+
[`examples/002_cm5_camera`](examples/002_cm5_camera).
|
|
174
185
|
|
|
175
186
|
## Security boundary
|
|
176
187
|
|
|
@@ -36,9 +36,9 @@ CopperPilot in your terminal: a thin, open-source client for CopperPilot electro
|
|
|
36
36
|
|
|
37
37
|
## Prerequisites
|
|
38
38
|
|
|
39
|
-
- Python 3.
|
|
39
|
+
- Python 3.11 or newer
|
|
40
40
|
- A [CopperPilot](https://copperpilot.ai) account for login
|
|
41
|
-
- KiCad 10 on `PATH` only if you run [`examples/001_esp32`](examples/001_esp32)
|
|
41
|
+
- KiCad 10 on `PATH` only if you run [`examples/001_esp32`](examples/001_esp32) or [`examples/002_cm5_camera`](examples/002_cm5_camera)
|
|
42
42
|
|
|
43
43
|
## Install and run
|
|
44
44
|
|
|
@@ -56,12 +56,18 @@ copper-pilot ./my-board
|
|
|
56
56
|
copper-pilot --resume
|
|
57
57
|
copper-pilot threads list
|
|
58
58
|
copper-pilot -n -m "Review this board" --json
|
|
59
|
+
copper-pilot --mode plan --effort intelligence -m "Survey and plan this board"
|
|
59
60
|
```
|
|
60
61
|
|
|
61
62
|
Both `copper-pilot` and `copper-pilot-cli` run the same program.
|
|
62
63
|
`copper-pilot --help` lists flags; [docs/cli.md](docs/cli.md) is the full
|
|
63
64
|
command reference.
|
|
64
65
|
|
|
66
|
+
Balanced effort is the default. Paid-plan users can select Intelligence with
|
|
67
|
+
`--effort intelligence` or interactive `/effort`. Intelligence uses
|
|
68
|
+
server-owned survey subagents and shows their lifecycle through the existing
|
|
69
|
+
Deep Agents task rows; Intelligence Plan turns survey before writing a plan.
|
|
70
|
+
|
|
65
71
|
## Use from Claude Code, Cursor, or Codex
|
|
66
72
|
|
|
67
73
|
CopperPilot stays the electronics agent. Copy
|
|
@@ -96,13 +102,16 @@ the parent directory is mode `0700` and the file is mode `0600`.
|
|
|
96
102
|
## LangChain
|
|
97
103
|
|
|
98
104
|
```python
|
|
99
|
-
from copper_pilot_cli.copper_protocol import CopperMode
|
|
105
|
+
from copper_pilot_cli.copper_protocol import CopperEffort, CopperMode
|
|
100
106
|
from copper_pilot_cli.langchain import CopperPilotAgent
|
|
101
107
|
from helper import drc_violations, erc_errors, render_pcb, run
|
|
102
108
|
|
|
103
109
|
PLAN = CopperMode.PLAN
|
|
104
110
|
|
|
105
|
-
copper_pilot = CopperPilotAgent(
|
|
111
|
+
copper_pilot = CopperPilotAgent(
|
|
112
|
+
workspace="esp32",
|
|
113
|
+
effort=CopperEffort.INTELLIGENCE,
|
|
114
|
+
)
|
|
106
115
|
|
|
107
116
|
run(copper_pilot, "Build me an ESP32 dev board.", PLAN)
|
|
108
117
|
run(copper_pilot, "Let us build this plan.")
|
|
@@ -120,7 +129,8 @@ Deep Agent. The compatible `deepagents` runtime is installed and pinned by this
|
|
|
120
129
|
package.
|
|
121
130
|
|
|
122
131
|
That snippet is the runnable example in
|
|
123
|
-
[`examples/001_esp32`](examples/001_esp32).
|
|
132
|
+
[`examples/001_esp32`](examples/001_esp32). A phased CM5 camera carrier lives in
|
|
133
|
+
[`examples/002_cm5_camera`](examples/002_cm5_camera).
|
|
124
134
|
|
|
125
135
|
## Security boundary
|
|
126
136
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.1.8
|
|
@@ -9,7 +9,7 @@ copper-pilot threads --help
|
|
|
9
9
|
copper-pilot mcp --help
|
|
10
10
|
```
|
|
11
11
|
|
|
12
|
-
Python 3.
|
|
12
|
+
Python 3.11 or newer is required. Install with `pip install copper-pilot-cli`.
|
|
13
13
|
|
|
14
14
|
## Chat
|
|
15
15
|
|
|
@@ -30,6 +30,7 @@ valid.
|
|
|
30
30
|
| `--no-stream` | Print the final assistant message after the run instead of streaming. |
|
|
31
31
|
| `--json` | Emit JSON events (or a final JSON document with `--no-stream`). |
|
|
32
32
|
| `--mode {agent,plan,ask}` | Hosted chat mode. Default: `agent`. |
|
|
33
|
+
| `--effort {balanced,intelligence}` | Hosted effort. Default: `balanced`; Intelligence requires a paid plan. |
|
|
33
34
|
| `-y`, `--auto-approve` | Auto approval: routine writes and known-safe shell still run; unknown actions prompt. |
|
|
34
35
|
| `--yolo` | Permit local side effects without prompting. Must be set explicitly. |
|
|
35
36
|
| `--version` | Print the package version. |
|
|
@@ -41,6 +42,7 @@ copper-pilot ./my-board
|
|
|
41
42
|
copper-pilot --resume
|
|
42
43
|
copper-pilot -n -m "Review this board" --json
|
|
43
44
|
copper-pilot ./my-board --mode plan -m "Propose a power tree"
|
|
45
|
+
copper-pilot ./my-board --mode plan --effort intelligence -m "Survey and plan the power tree"
|
|
44
46
|
```
|
|
45
47
|
|
|
46
48
|
Headless mode is also used when `--message` is set and stdout is not a TTY.
|
|
@@ -60,15 +62,33 @@ write to stdout; the protocol owns it.
|
|
|
60
62
|
| Tool | Role |
|
|
61
63
|
|------|------|
|
|
62
64
|
| `status` | Login state and discovered schematic/PCB paths. No hosted call. |
|
|
63
|
-
| `ask` | `--mode ask`. Auto approval. Optional `thread_id`. |
|
|
64
|
-
| `plan` | `--mode plan`. Auto approval. |
|
|
65
|
-
| `run` | `--mode agent`. `approval` is `auto` (default) or `yolo`. |
|
|
66
|
-
| `resume` | Continue `thread_id`.
|
|
65
|
+
| `ask` | `--mode ask`. Auto approval. Optional `thread_id` and `effort`. |
|
|
66
|
+
| `plan` | `--mode plan`. Auto approval. Optional `effort`. |
|
|
67
|
+
| `run` | `--mode agent`. Optional `effort`; `approval` is `auto` (default) or `yolo`. |
|
|
68
|
+
| `resume` | Continue `thread_id`. Optional `mode`, `effort`, and the same approval as `run`. |
|
|
67
69
|
| `threads_list` | List threads for this workspace (`limit`, `all_workspaces`). |
|
|
68
70
|
|
|
69
71
|
Workspace is the tool argument, else `CLAUDE_PROJECT_DIR`, else the process
|
|
70
72
|
current directory. Manual approval is TUI-only. See [harness.md](harness.md).
|
|
71
73
|
|
|
74
|
+
## Effort and Intelligence
|
|
75
|
+
|
|
76
|
+
Balanced is the default. Intelligence is available on paid plans and lets the
|
|
77
|
+
hosted parent run one to four survey subagents. Intelligence Plan turns survey
|
|
78
|
+
before creating or revising a plan. Workers are server-owned, survey-only, and
|
|
79
|
+
appear in the TUI through the existing Deep Agents task rows; they do not open
|
|
80
|
+
nested chats or execute through the local tool broker.
|
|
81
|
+
|
|
82
|
+
The interactive `/effort` command changes effort for the current thread.
|
|
83
|
+
Resuming that thread restores it; a new thread starts Balanced. In headless
|
|
84
|
+
text mode, worker state changes print as compact lines. `--json` retains raw
|
|
85
|
+
`status_event` objects.
|
|
86
|
+
|
|
87
|
+
Interactive clarification can offer suggested answers, custom text, or Skip
|
|
88
|
+
and waits without a client timeout. Headless and MCP calls cannot present that
|
|
89
|
+
UI, so an `ask_user_question` tool request is rejected with a clear error
|
|
90
|
+
instead of guessing or auto-skipping.
|
|
91
|
+
|
|
72
92
|
## Auth
|
|
73
93
|
|
|
74
94
|
```console
|
|
@@ -118,6 +138,37 @@ searches run freely. Writes, edits, deletes, and shell commands are gated:
|
|
|
118
138
|
|
|
119
139
|
`--yolo` wins over `--auto-approve`. Saved preferences never enable YOLO.
|
|
120
140
|
|
|
141
|
+
## Usage limits
|
|
142
|
+
|
|
143
|
+
The hosted service owns weekly and window usage. The CLI does not show raw
|
|
144
|
+
token balances, sell credits, or complete checkout.
|
|
145
|
+
|
|
146
|
+
Inside the interactive app, `/tokens` prints the current window as a
|
|
147
|
+
percentage, the next refresh time, and any additional-usage state.
|
|
148
|
+
`/tokens json` prints the member-safe API payload instead.
|
|
149
|
+
|
|
150
|
+
A blocked turn stays readable in `--json` output. An error event uses `data`
|
|
151
|
+
as an object:
|
|
152
|
+
|
|
153
|
+
```json
|
|
154
|
+
{
|
|
155
|
+
"type": "error",
|
|
156
|
+
"data": {
|
|
157
|
+
"message": "Usage limit reached.",
|
|
158
|
+
"code": "http_402",
|
|
159
|
+
"status": 402,
|
|
160
|
+
"block_reason": "weekly",
|
|
161
|
+
"can_purchase_overage": true,
|
|
162
|
+
"retryable": false
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
`block_reason` is `window`, `weekly`, `cost_cap`, `busy`, or `billing` when
|
|
168
|
+
the server sends one. A `busy` block and an ordinary rate limit use status
|
|
169
|
+
`429` with `retryable: true`. `can_purchase_overage` only says whether the
|
|
170
|
+
billing page can offer additional usage. The Textual UI prints `message`.
|
|
171
|
+
|
|
121
172
|
## Configuration
|
|
122
173
|
|
|
123
174
|
| Setting | Location |
|
|
@@ -21,7 +21,7 @@ See [UPSTREAM.md](../UPSTREAM.md) and [NOTICE](../NOTICE).
|
|
|
21
21
|
|
|
22
22
|
## Environment
|
|
23
23
|
|
|
24
|
-
Python 3.
|
|
24
|
+
Python 3.11 or newer. From the repository root:
|
|
25
25
|
|
|
26
26
|
```console
|
|
27
27
|
python3 -m venv .venv
|
|
@@ -39,6 +39,12 @@ pip install -e ".[dev]"
|
|
|
39
39
|
|
|
40
40
|
CI also runs `pip-audit`, `piplicenses` (fails on GPL/AGPL/UNKNOWN), a wheel
|
|
41
41
|
build, and `copper-pilot --version` / `copper-pilot-cli --version`.
|
|
42
|
+
Required CI covers every supported stable Python minor on Linux and the minimum
|
|
43
|
+
supported minor on macOS and Windows. Python 3.15 is probed weekly, outside
|
|
44
|
+
pull requests, by `.github/workflows/forward-python.yml`. When that scheduled
|
|
45
|
+
run is green, add the `Programming Language :: Python :: 3.15` classifier, add
|
|
46
|
+
3.15 to the required CI matrix, and retarget the scheduled probe at the next
|
|
47
|
+
unreleased Python.
|
|
42
48
|
|
|
43
49
|
## Tests
|
|
44
50
|
|
|
@@ -50,6 +56,40 @@ build, and `copper-pilot --version` / `copper-pilot-cli --version`.
|
|
|
50
56
|
|
|
51
57
|
Do not commit credentials, `.venv/`, or `dist/`.
|
|
52
58
|
|
|
59
|
+
## Hosted protocol
|
|
60
|
+
|
|
61
|
+
The client speaks protocol v1. Agent turns, and plan turns that carry plan
|
|
62
|
+
context, use `/api/copperpilot/analyze/agent/ws`. Ask turns and plan turns
|
|
63
|
+
without that context use `/api/copperpilot/analyze/chat/ws`.
|
|
64
|
+
|
|
65
|
+
`make_chat_start` in `copper_protocol.py` bounds history before the socket
|
|
66
|
+
send, matching the desktop harness:
|
|
67
|
+
|
|
68
|
+
| Attempt | Message cap | History cap | Frame cap |
|
|
69
|
+
|---------|-------------|-------------|-----------|
|
|
70
|
+
| 1 | 64 KiB | 4 MiB | 12 MiB |
|
|
71
|
+
| 2 | 32 KiB | 2 MiB | 8 MiB |
|
|
72
|
+
| 3 | 8 KiB | 128 KiB | 8 MiB |
|
|
73
|
+
| 4 | 4 KiB | 64 KiB | 8 MiB |
|
|
74
|
+
|
|
75
|
+
History is kept newest-first. Inline `data:` attachments are replaced before
|
|
76
|
+
the byte caps apply. A query or workspace snapshot that still cannot fit
|
|
77
|
+
raises `ProtocolError` with `code="PAYLOAD_TOO_LARGE"`.
|
|
78
|
+
|
|
79
|
+
A WebSocket `error` frame keeps `code`, `status`, `block_reason`,
|
|
80
|
+
`can_purchase_overage`, and `retryable` on both `ProtocolError` and the
|
|
81
|
+
`copper.error` event. Absent fields stay absent. The interactive UI and MCP
|
|
82
|
+
`error` string use `public_message`; `--json` and the MCP event digest keep
|
|
83
|
+
the object.
|
|
84
|
+
|
|
85
|
+
Device login and the WebSocket `User-Agent` (`CopperPilot CLI/<version>`)
|
|
86
|
+
read the installed package version. That version comes from `VERSION`.
|
|
87
|
+
|
|
88
|
+
`POST /api/copperpilot/analyze/token_limits` is the account-usage read. It
|
|
89
|
+
returns percentages and reset state even when chat is blocked. Do not add
|
|
90
|
+
token counts, plan allocations, Stripe checkout, or a per-chat context meter
|
|
91
|
+
here. The server does not expose those on this contract.
|
|
92
|
+
|
|
53
93
|
## Release
|
|
54
94
|
|
|
55
95
|
Version is the contents of [`VERSION`](../VERSION). `make release` writes that
|
|
@@ -32,7 +32,8 @@ copper-pilot -n -m "Review this board" --json --no-stream --mode ask
|
|
|
32
32
|
next turn can pass `--resume THREAD_ID`.
|
|
33
33
|
|
|
34
34
|
Use `--mode plan` for a plan, `--mode agent -y` for Auto local writes, and
|
|
35
|
-
`--yolo` only when the user asked to skip local approval.
|
|
35
|
+
`--yolo` only when the user asked to skip local approval. Add
|
|
36
|
+
`--effort intelligence` for a paid Intelligence turn; Balanced is the default.
|
|
36
37
|
|
|
37
38
|
## Option 2: MCP conductor (`copper-pilot mcp`)
|
|
38
39
|
|
|
@@ -82,10 +83,10 @@ Point the host at `copper-pilot mcp` on stdio. Tools:
|
|
|
82
83
|
| Tool | Role |
|
|
83
84
|
|------|------|
|
|
84
85
|
| `status` | Login state and discovered schematic/PCB paths |
|
|
85
|
-
| `ask` | Read-oriented specialist (`--mode ask`) |
|
|
86
|
-
| `plan` | Plan without applying (`--mode plan`) |
|
|
87
|
-
| `run` | Mutating agent turn (`--mode agent`) |
|
|
88
|
-
| `resume` | Continue `thread_id` (`mode` defaults to `agent`;
|
|
86
|
+
| `ask` | Read-oriented specialist (`--mode ask`); optional `effort` |
|
|
87
|
+
| `plan` | Plan without applying (`--mode plan`); optional `effort` |
|
|
88
|
+
| `run` | Mutating agent turn (`--mode agent`); optional `effort` |
|
|
89
|
+
| `resume` | Continue `thread_id` (`mode` defaults to `agent`; optional `effort`) |
|
|
89
90
|
| `threads_list` | List threads for this workspace |
|
|
90
91
|
|
|
91
92
|
Workspace is the tool `workspace` argument, else `CLAUDE_PROJECT_DIR`, else the
|
|
@@ -102,7 +103,18 @@ process current directory.
|
|
|
102
103
|
MCP cannot show the TUI, so Manual is not available there. `ask` and `plan`
|
|
103
104
|
always use Auto. `run` and `resume` default to Auto.
|
|
104
105
|
|
|
106
|
+
`effort` is `balanced` (default) or `intelligence`. Intelligence requires a
|
|
107
|
+
paid plan. It may run server-owned survey subagents; Plan turns survey before
|
|
108
|
+
the parent writes a plan. Progress reports compact worker transitions and the
|
|
109
|
+
result digest omits full worker output. If the hosted agent asks a clarification,
|
|
110
|
+
MCP returns a clear rejection because it cannot present the interactive options
|
|
111
|
+
and Skip UI; continue the returned `thread_id` in the terminal TUI to answer.
|
|
112
|
+
|
|
105
113
|
Missing credentials: MCP tools return `login_required` and tell the user to run
|
|
106
114
|
`copper-pilot auth login`. The server does not open a browser.
|
|
107
115
|
|
|
108
|
-
|
|
116
|
+
A hosted usage block sets `ok` and `success` to false. `error` remains the
|
|
117
|
+
server's public message. The matching digest entry keeps the structured
|
|
118
|
+
`data` object (`status`, `code`, `block_reason`, `can_purchase_overage`, and
|
|
119
|
+
`retryable` when the server sends them). Checkout stays on the CopperPilot
|
|
120
|
+
billing page. See [docs/cli.md](cli.md).
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# Project Implementation Plans
|
|
2
|
+
|
|
3
|
+
| Plan | Target | Status | Overview |
|
|
4
|
+
| :--- | :--- | :--- | :--- |
|
|
5
|
+
| [cm5-camera-carrier](plans/cm5-camera-carrier.plan.md) | CM5 Nano Camera Carrier | `open` | 55.0 x 40.0 mm 6-layer nano camera carrier for CM5 with onboard IMX219-D160, DF40 mezzanine, Mini-HDMI, DSI, USB-C, vertical USB-A, Micro SD, and 40-pin GPIO. |
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# CM5 Nano Camera Carrier Project Index
|
|
2
|
+
|
|
3
|
+
## Project Summary
|
|
4
|
+
High-density nano camera carrier board for the Raspberry Pi Compute Module 5 (CM5). Integrates an onboard Sony IMX219-D160 image sensor, high-speed display/video outputs (Mini-HDMI, 15-pin DSI FPC), dual-role USB routing with FSUSB42UMX switch, power management, Micro SD storage, and a 40-pin GPIO header into an ultra-compact 55.0 x 40.0 mm footprint.
|
|
5
|
+
|
|
6
|
+
## Key Specifications
|
|
7
|
+
- **Dimensions**: 55.0 x 40.0 mm with 3.0 mm corner radii and 4x M2.5 mounting holes.
|
|
8
|
+
- **Layer Stackup**: 6-layer controlled impedance stackup (100 ohm differential pairs for HDMI, CSI, DSI; 90 ohm differential pairs for USB).
|
|
9
|
+
- **Compute Module Interface**: Dual 100-pin Hirose DF40 mezzanine connectors H1A/H1B for CM5 (5V in, 3.3V/1.8V out, GPIO, I2C/SPI/UART, MIPI CSI/DSI, HDMI, nRPIBOOT, RUN_PG, GLOBAL_EN).
|
|
10
|
+
- **Onboard Camera**: IMX219-D160 with triple LDOs:
|
|
11
|
+
- RT9193-28GB (VA2V8, 2.8V analog)
|
|
12
|
+
- RT9193-18GB (VO1V8, 1.8V I/O)
|
|
13
|
+
- RT9013-12 (VD1V2, 1.2V digital core)
|
|
14
|
+
- 24.000 MHz crystal oscillator through 22 ohm damping resistor to MCLK
|
|
15
|
+
- DMG1012T I2C level shift (3.3V to 1.8V)
|
|
16
|
+
- MCF1210BF2-900T01 common-mode noise filters on CAM0_D0, CAM0_D1, and CAM0_CLK
|
|
17
|
+
- **Power Architecture**:
|
|
18
|
+
- USB-C power input into CM5_5V with 5.1 kOhm CC pulldown resistors
|
|
19
|
+
- MP1658GTF-Z synchronous step-down converter for PWR_3V3
|
|
20
|
+
- DIO7003HCST5 load switches for HDMI_5V and SD_3.3V
|
|
21
|
+
- STMPS2171STR power switch for USB_5V
|
|
22
|
+
- **USB Subsystem**:
|
|
23
|
+
- FSUSB42UMX high-speed USB switch multiplexing USB0 between USB-C (rpiboot provisioning) and vertical USB-A (host peripheral), selected by USB_SEL jumper
|
|
24
|
+
- **Peripherals & Indicators**:
|
|
25
|
+
- Mini-HDMI video output
|
|
26
|
+
- 15-pin 1.0 mm pitch DSI FPC connector
|
|
27
|
+
- Micro SD card slot (TF1)
|
|
28
|
+
- 40-pin standard GPIO header (PI1)
|
|
29
|
+
- User push-button Key1 connected to GPIO21
|
|
30
|
+
- Power (PWR) and Activity (ACT) LEDs
|
|
31
|
+
|
|
32
|
+
## References
|
|
33
|
+
- `cm5-minima-rev3`: Cloned and upgraded in-place to KiCad 10.0 under `.copperpilot/references/cm5-minima-rev3/`.
|