copper-pilot-cli 0.1.5__tar.gz → 0.1.7__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.
Files changed (144) hide show
  1. copper_pilot_cli-0.1.7/.claude-plugin/marketplace.json +17 -0
  2. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/.gitignore +2 -0
  3. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/CONTRIBUTING.md +8 -3
  4. copper_pilot_cli-0.1.7/HISTORY.md +95 -0
  5. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/PKG-INFO +32 -7
  6. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/README.md +28 -5
  7. copper_pilot_cli-0.1.7/VERSION +1 -0
  8. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/docs/cli.md +26 -1
  9. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/docs/development.md +10 -1
  10. copper_pilot_cli-0.1.7/docs/harness.md +108 -0
  11. copper_pilot_cli-0.1.7/examples/.gitignore +14 -0
  12. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/examples/001_esp32/.copperpilot/TOOLS.md +1 -1
  13. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/examples/001_esp32/README.md +1 -1
  14. copper_pilot_cli-0.1.7/examples/002_cm5_camera/.copperpilot/PLANS.md +5 -0
  15. copper_pilot_cli-0.1.7/examples/002_cm5_camera/.copperpilot/README.md +33 -0
  16. copper_pilot_cli-0.1.7/examples/002_cm5_camera/.copperpilot/plans/cm5-camera-carrier.plan.md +457 -0
  17. copper_pilot_cli-0.1.7/examples/002_cm5_camera/.gitignore +16 -0
  18. copper_pilot_cli-0.1.7/examples/002_cm5_camera/README.md +195 -0
  19. copper_pilot_cli-0.1.7/examples/002_cm5_camera/assembly_spec.json +2984 -0
  20. copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/3dmodels/CM4.step +3981 -0
  21. copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/3dmodels/CM5.step +3981 -0
  22. copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/3dmodels/Camera_IMX219-D160.step +3827 -0
  23. copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/3dmodels/USB_A_Molex_105057-0001_Vertical.wrl +15 -0
  24. copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/3dmodels/USB_A_vertical.step +1521 -0
  25. copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/CM5.3dshapes/5033981892.stp +49696 -0
  26. copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/CM5.3dshapes/DF40C-100DS.stp +96700 -0
  27. copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/CM5.3dshapes/JTHDA-19F08.STEP +76711 -0
  28. copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/CM5.3dshapes/SRP5030CC.stp +2943 -0
  29. copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.kicad_dru +4 -0
  30. copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.kicad_pcb +49990 -0
  31. copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.kicad_pro +600 -0
  32. copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.kicad_sch +23368 -0
  33. copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.kicad_sym +15922 -0
  34. copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.png +0 -0
  35. copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/C_0402_1005Metric.kicad_mod +379 -0
  36. copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/C_0805_2012Metric.kicad_mod +379 -0
  37. copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/Camera_Module_IMX219-D160.kicad_mod +388 -0
  38. copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/Crystal_SMD_3225-4Pin_3.2x2.5mm.kicad_mod +373 -0
  39. copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/HDMI_Mini-C_Molex_47151-0001.kicad_mod +415 -0
  40. copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/LED_0603_1608Metric.kicad_mod +373 -0
  41. copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/L_Bourns_SRP5030CC.kicad_mod +503 -0
  42. copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/L_CommonModeChoke_Coilank_ACM1210.kicad_mod +143 -0
  43. copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/MOLEX_USB_67298-4090.kicad_mod +310 -0
  44. copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/Molex_200528-0150_1x15-1MP_P1.00mm_Horizontal.kicad_mod +428 -0
  45. copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/PinHeader_1x03_P2.54mm_Vertical.kicad_mod +317 -0
  46. copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/PinHeader_2x20_P2.54mm_Vertical.kicad_mod +470 -0
  47. copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/R_0402_1005Metric.kicad_mod +379 -0
  48. copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/R_0603_1608Metric.kicad_mod +260 -0
  49. copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/Raspberry-Pi-4-Compute-Module.kicad_mod +1646 -0
  50. copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/SDCARD_MOLEX_503398-1892.kicad_mod +489 -0
  51. copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/SOT-23-5.kicad_mod +442 -0
  52. copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/SW_SPST_PTS645Sx43SMTR92.kicad_mod +281 -0
  53. copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/TSOT-23-6.kicad_mod +289 -0
  54. copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/Texas_DRT-3.kicad_mod +310 -0
  55. copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/UQFN-10_1.4x1.8mm_P0.4mm.kicad_mod +403 -0
  56. copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/USB_C_Receptacle_GCT_USB4105-xx-A_16P_TopMnt_Horizontal.kicad_mod +338 -0
  57. copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera_bottom.png +0 -0
  58. copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/fp-lib-table +4 -0
  59. copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/sym-lib-table +4 -0
  60. copper_pilot_cli-0.1.7/examples/002_cm5_camera/generate_3d_models.py +116 -0
  61. copper_pilot_cli-0.1.7/examples/002_cm5_camera/helper.py +2174 -0
  62. copper_pilot_cli-0.1.7/examples/002_cm5_camera/main.py +250 -0
  63. copper_pilot_cli-0.1.7/plugins/copper-pilot/.claude-plugin/plugin.json +12 -0
  64. copper_pilot_cli-0.1.7/plugins/copper-pilot/.mcp.json +8 -0
  65. copper_pilot_cli-0.1.7/plugins/copper-pilot/agents/copper-pilot.md +17 -0
  66. copper_pilot_cli-0.1.7/plugins/copper-pilot/skills/copper-pilot-review/SKILL.md +26 -0
  67. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/pyproject.toml +8 -2
  68. copper_pilot_cli-0.1.7/skills/copper-pilot-review/SKILL.md +51 -0
  69. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/copper_main.py +19 -7
  70. copper_pilot_cli-0.1.7/src/copper_pilot_cli/copper_mcp.py +432 -0
  71. copper_pilot_cli-0.1.7/tests/test_cm5_camera_example.py +688 -0
  72. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/tests/test_main.py +13 -0
  73. copper_pilot_cli-0.1.7/tests/test_mcp.py +268 -0
  74. copper_pilot_cli-0.1.7/tests/test_plugin_manifest.py +69 -0
  75. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/tests/test_release_gates.py +35 -2
  76. copper_pilot_cli-0.1.5/HISTORY.md +0 -48
  77. copper_pilot_cli-0.1.5/VERSION +0 -1
  78. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/CODE_OF_CONDUCT.md +0 -0
  79. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/LICENSE +0 -0
  80. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/NOTICE +0 -0
  81. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/SECURITY.md +0 -0
  82. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/SUPPORT.md +0 -0
  83. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/UPSTREAM.md +0 -0
  84. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/docs/assets/esp32-mini-1-h4.gif +0 -0
  85. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/docs/assets/logo-dark.png +0 -0
  86. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/docs/assets/logo-light.png +0 -0
  87. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/docs/assets/logo.png +0 -0
  88. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/examples/001_esp32/.copperpilot/PLANS.md +0 -0
  89. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/examples/001_esp32/.copperpilot/README.md +0 -0
  90. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/examples/001_esp32/.copperpilot/plans/esp32-dev-board.plan.md +0 -0
  91. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/examples/001_esp32/.gitignore +0 -0
  92. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/examples/001_esp32/esp32/3d-models/SW-SMD_L3.9-W2.9-H2.0-LS4.8.step +0 -0
  93. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/examples/001_esp32/esp32/3d-models/TYPE-C-31-M-12.step +0 -0
  94. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/examples/001_esp32/esp32/esp32.kicad_pcb +0 -0
  95. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/examples/001_esp32/esp32/esp32.kicad_pro +0 -0
  96. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/examples/001_esp32/esp32/esp32.kicad_sch +0 -0
  97. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/examples/001_esp32/esp32/esp32.png +0 -0
  98. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/examples/001_esp32/helper.py +0 -0
  99. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/examples/001_esp32/main.py +0 -0
  100. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/__init__.py +0 -0
  101. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/__main__.py +0 -0
  102. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/_upstream/__init__.py +0 -0
  103. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/_upstream/dcode_0_1_69/PROVENANCE.json +0 -0
  104. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/_upstream/dcode_0_1_69/__init__.py +0 -0
  105. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/_upstream/dcode_0_1_69/diff_utils.py +0 -0
  106. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/_version.py +0 -0
  107. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/clipboard.py +0 -0
  108. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/copper_api.py +0 -0
  109. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/copper_app.py +0 -0
  110. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/copper_auth.py +0 -0
  111. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/copper_config.py +0 -0
  112. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/copper_features.py +0 -0
  113. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/copper_graph.py +0 -0
  114. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/copper_hooks.py +0 -0
  115. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/copper_preferences.py +0 -0
  116. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/copper_presentation.py +0 -0
  117. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/copper_protocol.py +0 -0
  118. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/copper_theme.py +0 -0
  119. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/copper_tools.py +0 -0
  120. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/copper_update.py +0 -0
  121. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/copper_widgets.py +0 -0
  122. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/copper_workspace.py +0 -0
  123. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/deepagents_tools.py +0 -0
  124. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/diagnostics.py +0 -0
  125. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/langchain.py +0 -0
  126. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/media_utils.py +0 -0
  127. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/py.typed +0 -0
  128. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/sessions.py +0 -0
  129. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/textual_patches.py +0 -0
  130. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/tests/test_auth.py +0 -0
  131. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/tests/test_clipboard.py +0 -0
  132. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/tests/test_e2e.py +0 -0
  133. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/tests/test_esp32_example.py +0 -0
  134. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/tests/test_features.py +0 -0
  135. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/tests/test_langchain.py +0 -0
  136. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/tests/test_live_chat_e2e.py +0 -0
  137. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/tests/test_preferences.py +0 -0
  138. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/tests/test_presentation.py +0 -0
  139. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/tests/test_protocol.py +0 -0
  140. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/tests/test_sessions.py +0 -0
  141. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/tests/test_tools.py +0 -0
  142. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/tests/test_tui.py +0 -0
  143. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/tests/test_upstream_provenance.py +0 -0
  144. {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/tests/test_workspace.py +0 -0
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "copper-pilot-cli",
3
+ "owner": {
4
+ "name": "CopperPilot"
5
+ },
6
+ "metadata": {
7
+ "description": "CopperPilot Claude Code plugin: delegate electronics design to the hosted agent.",
8
+ "version": "0.1.5"
9
+ },
10
+ "plugins": [
11
+ {
12
+ "name": "copper-pilot",
13
+ "source": "./plugins/copper-pilot",
14
+ "description": "MCP conductor plus @copper-pilot and /copper-pilot-review."
15
+ }
16
+ ]
17
+ }
@@ -7,3 +7,5 @@ __pycache__/
7
7
  .venv/
8
8
  dist/
9
9
  build/
10
+
11
+ .DS_Store
@@ -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.12 or newer
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)
@@ -63,7 +63,8 @@ Never commit `~/.copper-pilot/.state/auth.json`, API keys, or private boards.
63
63
  3. Add or update tests. Coverage of new branches in `src/copper_pilot_cli`
64
64
  (except `_upstream/`) is expected.
65
65
  4. Update docs when behavior changes: [README.md](README.md),
66
- [docs/cli.md](docs/cli.md), or [docs/development.md](docs/development.md).
66
+ [docs/cli.md](docs/cli.md), [docs/harness.md](docs/harness.md), or
67
+ [docs/development.md](docs/development.md).
67
68
  5. Run `make fmt && make lint && make test`.
68
69
  6. Open a pull request with the template. Fill in the test plan.
69
70
 
@@ -78,10 +79,14 @@ Keep this client a hosted-agent frontend. Do not add:
78
79
  - Model or provider pickers
79
80
  - Local model execution
80
81
  - Computer use
81
- - MCP or plugin controls
82
+ - An MCP **host**, generic plugin runtime, or MCP **client** stack
82
83
  - LangSmith tracing or content telemetry
83
84
  - Sandbox runtimes
84
85
 
86
+ A thin MCP **server** (`copper-pilot mcp`) and a Claude Code plugin that only
87
+ wraps that server are in scope. They delegate to the hosted agent; they do not
88
+ reimplement it.
89
+
85
90
  Upstream Textual presentation is vendored under
86
91
  `src/copper_pilot_cli/_upstream/` with provenance in [UPSTREAM.md](UPSTREAM.md)
87
92
  and [NOTICE](NOTICE). When porting upstream changes, follow that document;
@@ -0,0 +1,95 @@
1
+ Changelog
2
+ =========
3
+
4
+
5
+ (unreleased)
6
+ ------------
7
+ - Merge pull request #11 from
8
+ CopperPilot/feat/python_versions_support_expansion. [Aditya]
9
+
10
+ Support Python 3.11 and future releases
11
+ - Ci: probe Python 3.15 weekly instead of on pull requests. [AdityaNG]
12
+
13
+ Keep the upstream install failure visible without turning required pull request checks red.
14
+ - Feat(py11) [AdityaNG]
15
+ - Merge pull request #7 from CopperPilot/feat/example_002_cm5_camera.
16
+ [Aditya]
17
+
18
+ feat(examples/002_cm5_camera): add 3D pose audit and generated carrier
19
+ - Fix(examples/002_cm5_camera): render the README PCB as a dimetric 3D
20
+ view. [AdityaNG, Cursor]
21
+
22
+ Use an orthogonal high-quality camera with a slight isometric tilt so the
23
+ hero PNG shows connector height instead of a flat top-down shot.
24
+ - Fix(examples/002_cm5_camera): skip library dirs relative to the
25
+ workspace. [AdityaNG, Cursor]
26
+
27
+ Absolute path parts named tmp (Linux /tmp pytest roots) were skipping the
28
+ entire haystack, so libraries_ready failed on Ubuntu CI.
29
+ - Feat(examples/002_cm5_camera): add 3D pose audit and generated
30
+ carrier. [AdityaNG, Cursor]
31
+
32
+ Lock connector 3D offsets, Module1 pad orientation, and the generated
33
+ KiCad project so the example reproduces NANO-C assembly parity.
34
+ - Feat(examples/002_cm5_camera/main.py): new example. [AdityaNG]
35
+
36
+
37
+ 0.1.6 (2026-09-18)
38
+ ------------------
39
+ - Release: version 0.1.6 🚀 [AdityaNG]
40
+ - Merge pull request #6 from CopperPilot/feat/plugins. [Aditya]
41
+
42
+ feat: add MCP conductor and Claude Code plugin
43
+ - Clarify server restrictions in PR template. [Aditya]
44
+
45
+ Updated checklist item to clarify server restrictions.
46
+ - Feat: add MCP conductor and Claude Code plugin. [AdityaNG, Cursor]
47
+
48
+ 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.
49
+
50
+
51
+ 0.1.5 (2026-09-17)
52
+ ------------------
53
+ - Release: version 0.1.5 🚀 [AdityaNG]
54
+ - Fix(README.md) [AdityaNG]
55
+
56
+
57
+ 0.1.4 (2026-09-17)
58
+ ------------------
59
+ - Release: version 0.1.4 🚀 [AdityaNG]
60
+ - Fix(tests/test_release_gates.py) [AdityaNG]
61
+
62
+
63
+ 0.1.3 (2026-09-17)
64
+ ------------------
65
+ - Release: version 0.1.3 🚀 [AdityaNG]
66
+ - Docs. [AdityaNG]
67
+
68
+
69
+ 0.1.2 (2026-09-17)
70
+ ------------------
71
+ - Release: version 0.1.2 🚀 [AdityaNG]
72
+ - Ci(pyproject.toml) [AdityaNG]
73
+ - Fix(tests/test_tui.py) [AdityaNG]
74
+
75
+
76
+ 0.1.1 (2026-09-17)
77
+ ------------------
78
+ - Release: version 0.1.1 🚀 [AdityaNG]
79
+
80
+
81
+ 0.1.0 (2026-09-17)
82
+ ------------------
83
+ - Release: version 0.1.0 🚀 [AdityaNG]
84
+ - Fix(tests/test_release_gates.py) [AdityaNG]
85
+ - Test. [AdityaNG]
86
+ - Docs. [AdityaNG]
87
+ - Docs. [AdityaNG]
88
+ - Example(examples/001_esp32/) [AdityaNG]
89
+ - Makefile. [AdityaNG]
90
+ - Ci. [AdityaNG]
91
+ - Docs. [AdityaNG]
92
+ - Refactor(name) [AdityaNG]
93
+ - Init. [AdityaNG]
94
+
95
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: copper-pilot-cli
3
- Version: 0.1.5
3
+ Version: 0.1.7
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,10 +14,11 @@ 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: <4,>=3.12
21
+ Requires-Python: >=3.11
21
22
  Requires-Dist: aiosqlite<1,>=0.22
22
23
  Requires-Dist: certifi>=2024.8.30
23
24
  Requires-Dist: deepagents==0.7.14
@@ -26,6 +27,7 @@ Requires-Dist: langchain-core<2,>=1.6
26
27
  Requires-Dist: langgraph-checkpoint-sqlite<4,>=3.1
27
28
  Requires-Dist: langgraph<2,>=1.2
28
29
  Requires-Dist: markdownify<2,>=1.2
30
+ Requires-Dist: mcp<2,>=1.21
29
31
  Requires-Dist: packaging<27,>=25
30
32
  Requires-Dist: pillow<13,>=12
31
33
  Requires-Dist: pydantic<3,>=2.12
@@ -85,9 +87,9 @@ CopperPilot in your terminal: a thin, open-source client for CopperPilot electro
85
87
 
86
88
  ## Prerequisites
87
89
 
88
- - Python 3.12 or newer
90
+ - Python 3.11 or newer
89
91
  - A [CopperPilot](https://copperpilot.ai) account for login
90
- - 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)
91
93
 
92
94
  ## Install and run
93
95
 
@@ -111,6 +113,27 @@ Both `copper-pilot` and `copper-pilot-cli` run the same program.
111
113
  `copper-pilot --help` lists flags; [docs/cli.md](docs/cli.md) is the full
112
114
  command reference.
113
115
 
116
+ ## Use from Claude Code, Cursor, or Codex
117
+
118
+ CopperPilot stays the electronics agent. Copy
119
+ [`skills/copper-pilot-review/SKILL.md`](skills/copper-pilot-review/SKILL.md) into
120
+ your harness, or expose the same agent over MCP:
121
+
122
+ ```console
123
+ claude mcp add copper-pilot -- copper-pilot mcp
124
+ ```
125
+
126
+ Claude Code can also install the in-repo plugin:
127
+
128
+ ```text
129
+ /plugin marketplace add CopperPilot/copper-pilot-cli
130
+ /plugin install copper-pilot
131
+ ```
132
+
133
+ That plugin starts `copper-pilot mcp` and adds `@copper-pilot` plus
134
+ `/copper-pilot-review`. Setup for Cursor, Codex, and approvals:
135
+ [docs/harness.md](docs/harness.md).
136
+
114
137
  ## Configuration
115
138
 
116
139
  - Production API: `https://copperpilot.ai`
@@ -148,7 +171,8 @@ Deep Agent. The compatible `deepagents` runtime is installed and pinned by this
148
171
  package.
149
172
 
150
173
  That snippet is the runnable example in
151
- [`examples/001_esp32`](examples/001_esp32).
174
+ [`examples/001_esp32`](examples/001_esp32). A phased CM5 camera carrier lives in
175
+ [`examples/002_cm5_camera`](examples/002_cm5_camera).
152
176
 
153
177
  ## Security boundary
154
178
 
@@ -162,8 +186,9 @@ Filesystem, search, edit, and shell execution use Deep Agents' native
162
186
  normalizes hosted tool names, approval decisions, and result envelopes.
163
187
 
164
188
  Computer use, model/provider selection, local model execution, LangSmith
165
- tracing, content telemetry, MCP/plugin controls, and server implementation code
166
- are not part of this package.
189
+ tracing, content telemetry, MCP **host**/plugin-runtime controls, and server
190
+ implementation code are not part of this package. A thin MCP **server**
191
+ (`copper-pilot mcp`) that delegates to the hosted agent is.
167
192
 
168
193
  See [UPSTREAM.md](UPSTREAM.md) and [NOTICE](NOTICE) for the retained Textual
169
194
  client attribution.
@@ -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.12 or newer
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
 
@@ -62,6 +62,27 @@ Both `copper-pilot` and `copper-pilot-cli` run the same program.
62
62
  `copper-pilot --help` lists flags; [docs/cli.md](docs/cli.md) is the full
63
63
  command reference.
64
64
 
65
+ ## Use from Claude Code, Cursor, or Codex
66
+
67
+ CopperPilot stays the electronics agent. Copy
68
+ [`skills/copper-pilot-review/SKILL.md`](skills/copper-pilot-review/SKILL.md) into
69
+ your harness, or expose the same agent over MCP:
70
+
71
+ ```console
72
+ claude mcp add copper-pilot -- copper-pilot mcp
73
+ ```
74
+
75
+ Claude Code can also install the in-repo plugin:
76
+
77
+ ```text
78
+ /plugin marketplace add CopperPilot/copper-pilot-cli
79
+ /plugin install copper-pilot
80
+ ```
81
+
82
+ That plugin starts `copper-pilot mcp` and adds `@copper-pilot` plus
83
+ `/copper-pilot-review`. Setup for Cursor, Codex, and approvals:
84
+ [docs/harness.md](docs/harness.md).
85
+
65
86
  ## Configuration
66
87
 
67
88
  - Production API: `https://copperpilot.ai`
@@ -99,7 +120,8 @@ Deep Agent. The compatible `deepagents` runtime is installed and pinned by this
99
120
  package.
100
121
 
101
122
  That snippet is the runnable example in
102
- [`examples/001_esp32`](examples/001_esp32).
123
+ [`examples/001_esp32`](examples/001_esp32). A phased CM5 camera carrier lives in
124
+ [`examples/002_cm5_camera`](examples/002_cm5_camera).
103
125
 
104
126
  ## Security boundary
105
127
 
@@ -113,8 +135,9 @@ Filesystem, search, edit, and shell execution use Deep Agents' native
113
135
  normalizes hosted tool names, approval decisions, and result envelopes.
114
136
 
115
137
  Computer use, model/provider selection, local model execution, LangSmith
116
- tracing, content telemetry, MCP/plugin controls, and server implementation code
117
- are not part of this package.
138
+ tracing, content telemetry, MCP **host**/plugin-runtime controls, and server
139
+ implementation code are not part of this package. A thin MCP **server**
140
+ (`copper-pilot mcp`) that delegates to the hosted agent is.
118
141
 
119
142
  See [UPSTREAM.md](UPSTREAM.md) and [NOTICE](NOTICE) for the retained Textual
120
143
  client attribution.
@@ -0,0 +1 @@
1
+ 0.1.7
@@ -6,9 +6,10 @@
6
6
  copper-pilot --help
7
7
  copper-pilot auth --help
8
8
  copper-pilot threads --help
9
+ copper-pilot mcp --help
9
10
  ```
10
11
 
11
- Python 3.12 or newer is required. Install with `pip install copper-pilot-cli`.
12
+ Python 3.11 or newer is required. Install with `pip install copper-pilot-cli`.
12
13
 
13
14
  ## Chat
14
15
 
@@ -43,6 +44,30 @@ copper-pilot ./my-board --mode plan -m "Propose a power tree"
43
44
  ```
44
45
 
45
46
  Headless mode is also used when `--message` is set and stdout is not a TTY.
47
+ With `--json --no-stream`, the document includes `thread_id` so a later run can
48
+ pass `--resume`.
49
+
50
+ ## MCP
51
+
52
+ ```console
53
+ copper-pilot mcp
54
+ ```
55
+
56
+ Serves a stdio MCP conductor for Claude Code, Cursor, Codex, and other MCP
57
+ hosts. Uses the stored device-login credential. Does not open a browser. Do not
58
+ write to stdout; the protocol owns it.
59
+
60
+ | Tool | Role |
61
+ |------|------|
62
+ | `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`. Same approval as `run`. |
67
+ | `threads_list` | List threads for this workspace (`limit`, `all_workspaces`). |
68
+
69
+ Workspace is the tool argument, else `CLAUDE_PROJECT_DIR`, else the process
70
+ current directory. Manual approval is TUI-only. See [harness.md](harness.md).
46
71
 
47
72
  ## Auth
48
73
 
@@ -10,6 +10,9 @@ src/copper_pilot_cli/ Python package
10
10
  tests/ pytest suite
11
11
  examples/ Runnable examples
12
12
  docs/ User and developer docs
13
+ skills/ Portable Agent Skill for other harnesses
14
+ plugins/ Claude Code plugin (not in the PyPI wheel)
15
+ .claude-plugin/ Plugin marketplace manifest
13
16
  .github/ CI, issue forms, pull request template
14
17
  ```
15
18
 
@@ -18,7 +21,7 @@ See [UPSTREAM.md](../UPSTREAM.md) and [NOTICE](../NOTICE).
18
21
 
19
22
  ## Environment
20
23
 
21
- Python 3.12 or newer. From the repository root:
24
+ Python 3.11 or newer. From the repository root:
22
25
 
23
26
  ```console
24
27
  python3 -m venv .venv
@@ -36,6 +39,12 @@ pip install -e ".[dev]"
36
39
 
37
40
  CI also runs `pip-audit`, `piplicenses` (fails on GPL/AGPL/UNKNOWN), a wheel
38
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.
39
48
 
40
49
  ## Tests
41
50
 
@@ -0,0 +1,108 @@
1
+ # Use CopperPilot from Claude Code, Cursor, or Codex
2
+
3
+ CopperPilot stays the electronics agent. The outer tool (Claude Code, Cursor,
4
+ Codex, or a script) only **delegates**. Do not hand-edit KiCad files while a
5
+ CopperPilot run is in flight.
6
+
7
+ Install the CLI and log in once from a terminal:
8
+
9
+ ```console
10
+ pip install copper-pilot-cli
11
+ copper-pilot auth login
12
+ ```
13
+
14
+ ## Option 1: shell out to the CLI
15
+
16
+ Copy [`skills/copper-pilot-review/SKILL.md`](../skills/copper-pilot-review/SKILL.md)
17
+ into the skill location your harness reads:
18
+
19
+ | Harness | Skill location |
20
+ |---------|----------------|
21
+ | Claude Code | `~/.claude/skills/copper-pilot-review/SKILL.md` or the project's `.claude/skills/` |
22
+ | Cursor | `.cursor/skills/copper-pilot-review/SKILL.md` or project rules that point at the file |
23
+ | Codex | `AGENTS.md` or the project's skill directory, depending on your Codex setup |
24
+
25
+ Then ask the outer agent to review the board. It should run:
26
+
27
+ ```console
28
+ copper-pilot -n -m "Review this board" --json --no-stream --mode ask
29
+ ```
30
+
31
+ `--json --no-stream` prints one JSON document. `thread_id` is included so the
32
+ next turn can pass `--resume THREAD_ID`.
33
+
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.
36
+
37
+ ## Option 2: MCP conductor (`copper-pilot mcp`)
38
+
39
+ The same process as the CLI, same stored credential. Stdio JSON-RPC; do not
40
+ write logs to stdout.
41
+
42
+ ### Claude Code
43
+
44
+ ```console
45
+ claude mcp add copper-pilot -- copper-pilot mcp
46
+ ```
47
+
48
+ Or install the in-repo plugin (starts the same server automatically):
49
+
50
+ ```text
51
+ /plugin marketplace add CopperPilot/copper-pilot-cli
52
+ /plugin install copper-pilot
53
+ ```
54
+
55
+ Local checkout:
56
+
57
+ ```console
58
+ claude --plugin-dir plugins/copper-pilot
59
+ ```
60
+
61
+ The plugin also registers `@copper-pilot` and `/copper-pilot-review`.
62
+
63
+ ### Cursor
64
+
65
+ Add a stdio server in `.cursor/mcp.json`:
66
+
67
+ ```json
68
+ {
69
+ "mcpServers": {
70
+ "copper-pilot": {
71
+ "command": "copper-pilot",
72
+ "args": ["mcp"]
73
+ }
74
+ }
75
+ }
76
+ ```
77
+
78
+ ### Codex and other MCP hosts
79
+
80
+ Point the host at `copper-pilot mcp` on stdio. Tools:
81
+
82
+ | Tool | Role |
83
+ |------|------|
84
+ | `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`; pass `mode="ask"` to keep it read-only) |
89
+ | `threads_list` | List threads for this workspace |
90
+
91
+ Workspace is the tool `workspace` argument, else `CLAUDE_PROJECT_DIR`, else the
92
+ process current directory.
93
+
94
+ ## Approval
95
+
96
+ | Mode | Where | Behavior |
97
+ |------|-------|----------|
98
+ | Manual | Interactive CLI / TUI only | Prompt before gated writes and shell |
99
+ | Auto | Harness default (`-y`, MCP `approval=auto`) | Routine writes and known-safe shell |
100
+ | YOLO | Explicit `--yolo` or MCP `approval=yolo` | All local side effects. Never saved |
101
+
102
+ MCP cannot show the TUI, so Manual is not available there. `ask` and `plan`
103
+ always use Auto. `run` and `resume` default to Auto.
104
+
105
+ Missing credentials: MCP tools return `login_required` and tell the user to run
106
+ `copper-pilot auth login`. The server does not open a browser.
107
+
108
+ See [docs/cli.md](cli.md) for the full command reference.
@@ -0,0 +1,14 @@
1
+ .copperpilot/tmp/
2
+ .copperpilot/references/
3
+ .copperpilot/oracle/
4
+ .copperpilot/skills/
5
+ __pycache__/
6
+ fp-info-cache
7
+ *.kicad_prl
8
+ *-backups/
9
+ *.bak
10
+ *.lck
11
+ .history
12
+ *.rpt
13
+ generate_schematic.py
14
+ build_pcb.py
@@ -2,4 +2,4 @@
2
2
 
3
3
  ## Standard Tooling
4
4
  - `kicad-cli 10.0.3`: Primary verification and netlist/export toolchain.
5
- - `Python 3.12+`: Local script execution and DRC/ERC summary processing.
5
+ - `Python 3.11+`: Local script execution and DRC/ERC summary processing.
@@ -26,4 +26,4 @@ render_pcb("esp32.png")
26
26
  python examples/001_esp32/main.py
27
27
  ```
28
28
 
29
- Python 3.12, `pip install -e .`, `copper-pilot auth login`, and KiCad 10 on `PATH`.
29
+ Python 3.11+, `pip install -e .`, `copper-pilot auth login`, and KiCad 10 on `PATH`.
@@ -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/`.