copper-pilot-cli 0.1.8__tar.gz → 0.1.9__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.8 → copper_pilot_cli-0.1.9}/HISTORY.md +44 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/PKG-INFO +9 -4
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/README.md +5 -3
- copper_pilot_cli-0.1.9/VERSION +1 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/docs/cli.md +29 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/docs/harness.md +58 -2
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/pyproject.toml +4 -0
- copper_pilot_cli-0.1.9/src/copper_pilot_cli/copper_acp.py +754 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_main.py +52 -4
- copper_pilot_cli-0.1.9/tests/test_acp.py +827 -0
- copper_pilot_cli-0.1.9/tests/test_main.py +264 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/tests/test_release_gates.py +11 -0
- copper_pilot_cli-0.1.8/VERSION +0 -1
- copper_pilot_cli-0.1.8/tests/test_main.py +0 -128
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/.claude-plugin/marketplace.json +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/.gitignore +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/CODE_OF_CONDUCT.md +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/CONTRIBUTING.md +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/LICENSE +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/NOTICE +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/SECURITY.md +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/SUPPORT.md +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/UPSTREAM.md +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/docs/assets/esp32-mini-1-h4.gif +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/docs/assets/logo-dark.png +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/docs/assets/logo-light.png +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/docs/assets/logo.png +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/docs/development.md +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/.gitignore +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/001_esp32/.copperpilot/PLANS.md +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/001_esp32/.copperpilot/README.md +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/001_esp32/.copperpilot/TOOLS.md +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/001_esp32/.copperpilot/plans/esp32-dev-board.plan.md +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/001_esp32/.gitignore +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/001_esp32/README.md +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/001_esp32/esp32/3d-models/SW-SMD_L3.9-W2.9-H2.0-LS4.8.step +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/001_esp32/esp32/3d-models/TYPE-C-31-M-12.step +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/001_esp32/esp32/esp32.kicad_pcb +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/001_esp32/esp32/esp32.kicad_pro +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/001_esp32/esp32/esp32.kicad_sch +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/001_esp32/esp32/esp32.png +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/001_esp32/helper.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/001_esp32/main.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/.copperpilot/PLANS.md +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/.copperpilot/README.md +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/.copperpilot/plans/cm5-camera-carrier.plan.md +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/.gitignore +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/README.md +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/assembly_spec.json +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/3dmodels/CM4.step +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/3dmodels/CM5.step +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/3dmodels/Camera_IMX219-D160.step +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/3dmodels/USB_A_Molex_105057-0001_Vertical.wrl +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/3dmodels/USB_A_vertical.step +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/CM5.3dshapes/5033981892.stp +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/CM5.3dshapes/DF40C-100DS.stp +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/CM5.3dshapes/JTHDA-19F08.STEP +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/CM5.3dshapes/SRP5030CC.stp +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.kicad_dru +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.kicad_pcb +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.kicad_pro +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.kicad_sch +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.kicad_sym +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.png +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/C_0402_1005Metric.kicad_mod +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/C_0805_2012Metric.kicad_mod +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/Camera_Module_IMX219-D160.kicad_mod +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/Crystal_SMD_3225-4Pin_3.2x2.5mm.kicad_mod +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/HDMI_Mini-C_Molex_47151-0001.kicad_mod +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/LED_0603_1608Metric.kicad_mod +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/L_Bourns_SRP5030CC.kicad_mod +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/L_CommonModeChoke_Coilank_ACM1210.kicad_mod +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/MOLEX_USB_67298-4090.kicad_mod +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/Molex_200528-0150_1x15-1MP_P1.00mm_Horizontal.kicad_mod +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/PinHeader_1x03_P2.54mm_Vertical.kicad_mod +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/PinHeader_2x20_P2.54mm_Vertical.kicad_mod +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/R_0402_1005Metric.kicad_mod +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/R_0603_1608Metric.kicad_mod +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/Raspberry-Pi-4-Compute-Module.kicad_mod +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/SDCARD_MOLEX_503398-1892.kicad_mod +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/SOT-23-5.kicad_mod +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/SW_SPST_PTS645Sx43SMTR92.kicad_mod +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/TSOT-23-6.kicad_mod +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/Texas_DRT-3.kicad_mod +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/UQFN-10_1.4x1.8mm_P0.4mm.kicad_mod +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/USB_C_Receptacle_GCT_USB4105-xx-A_16P_TopMnt_Horizontal.kicad_mod +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera_bottom.png +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/fp-lib-table +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/sym-lib-table +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/generate_3d_models.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/helper.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/main.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/plugins/copper-pilot/.claude-plugin/plugin.json +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/plugins/copper-pilot/.mcp.json +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/plugins/copper-pilot/agents/copper-pilot.md +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/plugins/copper-pilot/skills/copper-pilot-review/SKILL.md +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/skills/copper-pilot-review/SKILL.md +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/__init__.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/__main__.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/_upstream/__init__.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/_upstream/dcode_0_1_69/PROVENANCE.json +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/_upstream/dcode_0_1_69/__init__.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/_upstream/dcode_0_1_69/diff_utils.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/_version.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/clipboard.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_api.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_app.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_auth.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_config.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_features.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_graph.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_hooks.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_mcp.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_preferences.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_presentation.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_protocol.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_status_events.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_theme.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_tools.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_update.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_widgets.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_workspace.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/deepagents_tools.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/diagnostics.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/langchain.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/media_utils.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/py.typed +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/sessions.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/textual_patches.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/tests/test_auth.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/tests/test_clipboard.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/tests/test_cm5_camera_example.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/tests/test_copper_api.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/tests/test_e2e.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/tests/test_esp32_example.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/tests/test_features.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/tests/test_langchain.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/tests/test_live_chat_e2e.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/tests/test_mcp.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/tests/test_plugin_manifest.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/tests/test_preferences.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/tests/test_presentation.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/tests/test_protocol.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/tests/test_sessions.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/tests/test_status_events.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/tests/test_tools.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/tests/test_tui.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/tests/test_upstream_provenance.py +0 -0
- {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/tests/test_workspace.py +0 -0
|
@@ -4,6 +4,49 @@ Changelog
|
|
|
4
4
|
|
|
5
5
|
(unreleased)
|
|
6
6
|
------------
|
|
7
|
+
- Merge pull request #18 from CopperPilot/feat/acp-server. [Aditya]
|
|
8
|
+
|
|
9
|
+
feat: add `copper-pilot acp` Agent Client Protocol server
|
|
10
|
+
- Fix(acp): surface hosted turn failures in the JSON-RPC error message.
|
|
11
|
+
[AdityaNG, Claude Fable 5.1]
|
|
12
|
+
|
|
13
|
+
T3 Code showed a bare "Internal error" for a prompt the hosted service
|
|
14
|
+
had refused with "Upgrade to a paid plan to use Intelligence." because the
|
|
15
|
+
explanation only lived in the error's `data`, which T3 does not display.
|
|
16
|
+
Carry the hosted message in the error `message` (keeping the code), map a
|
|
17
|
+
refused websocket handshake to auth_required when it is 401/403, log every
|
|
18
|
+
failed turn to the diagnostics log, and never let an unexpected exception
|
|
19
|
+
escape to the SDK's generic handler.
|
|
20
|
+
- Fix(acp): accept `copper-pilot acp auth login` for clients that append
|
|
21
|
+
login args. [AdityaNG, Claude Fable 5.1]
|
|
22
|
+
|
|
23
|
+
T3 Code runs an ACP terminal auth method by appending the method's args to
|
|
24
|
+
the configured agent command, so the advertised `auth login` was spawned as
|
|
25
|
+
`copper-pilot acp auth login`. The acp parser rejected the extra arguments
|
|
26
|
+
with exit code 2 and T3 reported "The provider login command did not finish
|
|
27
|
+
successfully." Normalize `acp auth ...` onto `auth ...` before parsing and
|
|
28
|
+
document the alias.
|
|
29
|
+
- Feat: add `copper-pilot acp` Agent Client Protocol server. [AdityaNG,
|
|
30
|
+
Claude Fable 5.1]
|
|
31
|
+
|
|
32
|
+
Serve the hosted CopperPilot agent over ACP stdio so editors such as Zed
|
|
33
|
+
can drive it with streaming messages, tool calls, permission prompts,
|
|
34
|
+
session modes (ask/plan/agent), an effort config option, session/load
|
|
35
|
+
resume of existing threads, and session/cancel.
|
|
36
|
+
|
|
37
|
+
- New copper_acp.py built directly on the agent-client-protocol SDK;
|
|
38
|
+
approvals and clarifying questions map onto session/request_permission.
|
|
39
|
+
- `acp` optional extra; the command prints an install hint without it.
|
|
40
|
+
- CI license gate ignores agent-client-protocol (Apache-2.0 LICENSE file,
|
|
41
|
+
no license metadata in the wheel).
|
|
42
|
+
- Tests: tests/test_acp.py (100% coverage of copper_acp.py, including a
|
|
43
|
+
real stdio JSON-RPC round trip), parser and entrypoint tests, and a
|
|
44
|
+
release-gate check for the extra.
|
|
45
|
+
- Docs: cli.md, harness.md (Zed setup), README.
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
0.1.8 (2026-10-14)
|
|
49
|
+
------------------
|
|
7
50
|
|
|
8
51
|
Fix
|
|
9
52
|
~~~
|
|
@@ -19,6 +62,7 @@ Fix
|
|
|
19
62
|
|
|
20
63
|
Other
|
|
21
64
|
~~~~~
|
|
65
|
+
- Release: version 0.1.8 🚀 [AdityaNG]
|
|
22
66
|
- Merge pull request #16 from CopperPilot/update/14_oct_2026. [Aditya]
|
|
23
67
|
|
|
24
68
|
Add Intelligence effort, hosted survey workers, and modal keyboard focus
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: copper-pilot-cli
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.9
|
|
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
|
|
@@ -37,7 +37,10 @@ Requires-Dist: rich<16,>=15
|
|
|
37
37
|
Requires-Dist: textual<9,>=8.2.8
|
|
38
38
|
Requires-Dist: uuid-utils<2,>=0.12
|
|
39
39
|
Requires-Dist: websockets<18,>=15
|
|
40
|
+
Provides-Extra: acp
|
|
41
|
+
Requires-Dist: agent-client-protocol<1,>=0.12; extra == 'acp'
|
|
40
42
|
Provides-Extra: dev
|
|
43
|
+
Requires-Dist: agent-client-protocol<1,>=0.12; extra == 'dev'
|
|
41
44
|
Requires-Dist: build<2,>=1.4; extra == 'dev'
|
|
42
45
|
Requires-Dist: gitchangelog==3.0.4; extra == 'dev'
|
|
43
46
|
Requires-Dist: pip-audit<3,>=2.10; extra == 'dev'
|
|
@@ -137,8 +140,9 @@ Claude Code can also install the in-repo plugin:
|
|
|
137
140
|
```
|
|
138
141
|
|
|
139
142
|
That plugin starts `copper-pilot mcp` and adds `@copper-pilot` plus
|
|
140
|
-
`/copper-pilot-review`.
|
|
141
|
-
[
|
|
143
|
+
`/copper-pilot-review`. Editors that speak the Agent Client Protocol, such as
|
|
144
|
+
Zed, can run `copper-pilot acp` after `pip install "copper-pilot-cli[acp]"`.
|
|
145
|
+
Setup for Cursor, Codex, Zed, and approvals: [docs/harness.md](docs/harness.md).
|
|
142
146
|
|
|
143
147
|
## Configuration
|
|
144
148
|
|
|
@@ -197,7 +201,8 @@ normalizes hosted tool names, approval decisions, and result envelopes.
|
|
|
197
201
|
Computer use, model/provider selection, local model execution, LangSmith
|
|
198
202
|
tracing, content telemetry, MCP **host**/plugin-runtime controls, and server
|
|
199
203
|
implementation code are not part of this package. A thin MCP **server**
|
|
200
|
-
(`copper-pilot mcp`)
|
|
204
|
+
(`copper-pilot mcp`) and an ACP **server** (`copper-pilot acp`) that delegate
|
|
205
|
+
to the hosted agent are.
|
|
201
206
|
|
|
202
207
|
See [UPSTREAM.md](UPSTREAM.md) and [NOTICE](NOTICE) for the retained Textual
|
|
203
208
|
client attribution.
|
|
@@ -86,8 +86,9 @@ Claude Code can also install the in-repo plugin:
|
|
|
86
86
|
```
|
|
87
87
|
|
|
88
88
|
That plugin starts `copper-pilot mcp` and adds `@copper-pilot` plus
|
|
89
|
-
`/copper-pilot-review`.
|
|
90
|
-
[
|
|
89
|
+
`/copper-pilot-review`. Editors that speak the Agent Client Protocol, such as
|
|
90
|
+
Zed, can run `copper-pilot acp` after `pip install "copper-pilot-cli[acp]"`.
|
|
91
|
+
Setup for Cursor, Codex, Zed, and approvals: [docs/harness.md](docs/harness.md).
|
|
91
92
|
|
|
92
93
|
## Configuration
|
|
93
94
|
|
|
@@ -146,7 +147,8 @@ normalizes hosted tool names, approval decisions, and result envelopes.
|
|
|
146
147
|
Computer use, model/provider selection, local model execution, LangSmith
|
|
147
148
|
tracing, content telemetry, MCP **host**/plugin-runtime controls, and server
|
|
148
149
|
implementation code are not part of this package. A thin MCP **server**
|
|
149
|
-
(`copper-pilot mcp`)
|
|
150
|
+
(`copper-pilot mcp`) and an ACP **server** (`copper-pilot acp`) that delegate
|
|
151
|
+
to the hosted agent are.
|
|
150
152
|
|
|
151
153
|
See [UPSTREAM.md](UPSTREAM.md) and [NOTICE](NOTICE) for the retained Textual
|
|
152
154
|
client attribution.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.1.9
|
|
@@ -7,6 +7,7 @@ copper-pilot --help
|
|
|
7
7
|
copper-pilot auth --help
|
|
8
8
|
copper-pilot threads --help
|
|
9
9
|
copper-pilot mcp --help
|
|
10
|
+
copper-pilot acp --help
|
|
10
11
|
```
|
|
11
12
|
|
|
12
13
|
Python 3.11 or newer is required. Install with `pip install copper-pilot-cli`.
|
|
@@ -71,6 +72,34 @@ write to stdout; the protocol owns it.
|
|
|
71
72
|
Workspace is the tool argument, else `CLAUDE_PROJECT_DIR`, else the process
|
|
72
73
|
current directory. Manual approval is TUI-only. See [harness.md](harness.md).
|
|
73
74
|
|
|
75
|
+
## ACP
|
|
76
|
+
|
|
77
|
+
```console
|
|
78
|
+
pip install "copper-pilot-cli[acp]"
|
|
79
|
+
copper-pilot acp
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Serves the Agent Client Protocol over stdio for editors such as Zed. The
|
|
83
|
+
`acp` extra is optional; without it the command prints an install hint and
|
|
84
|
+
exits with status 2. `copper-pilot acp auth login` is accepted as an alias for
|
|
85
|
+
`copper-pilot auth login`, because some ACP clients (T3 Code) run the
|
|
86
|
+
advertised login method by appending its arguments to the agent command. One ACP session is one CopperPilot thread, and the
|
|
87
|
+
session `cwd` is the workspace. Uses the stored device-login credential and
|
|
88
|
+
advertises a terminal auth method that runs `copper-pilot auth login`.
|
|
89
|
+
|
|
90
|
+
| ACP feature | CopperPilot behavior |
|
|
91
|
+
|-------------|----------------------|
|
|
92
|
+
| Session modes | `ask`, `plan`, `agent` (default `agent`) |
|
|
93
|
+
| Config options | `mode` and `effort` (`balanced` default, `intelligence` paid) |
|
|
94
|
+
| `session/load` | Resumes an existing thread id and replays its history |
|
|
95
|
+
| `session/request_permission` | Auto approval; non-routine writes and shell prompt the editor |
|
|
96
|
+
| `session/cancel` | Cancels the hosted turn and local tools |
|
|
97
|
+
|
|
98
|
+
"Allow all for this session" switches that session to YOLO until the server
|
|
99
|
+
exits; it is never saved. Clarifying questions with options are shown as
|
|
100
|
+
permission choices plus Skip; free-text questions are declined with a message
|
|
101
|
+
to continue in the TUI. See [harness.md](harness.md).
|
|
102
|
+
|
|
74
103
|
## Effort and Intelligence
|
|
75
104
|
|
|
76
105
|
Balanced is the default. Intelligence is available on paid plans and lets the
|
|
@@ -92,17 +92,73 @@ Point the host at `copper-pilot mcp` on stdio. Tools:
|
|
|
92
92
|
Workspace is the tool `workspace` argument, else `CLAUDE_PROJECT_DIR`, else the
|
|
93
93
|
process current directory.
|
|
94
94
|
|
|
95
|
+
## Option 3: ACP server (`copper-pilot acp`)
|
|
96
|
+
|
|
97
|
+
The Agent Client Protocol (ACP) lets editors drive an agent over stdio
|
|
98
|
+
JSON-RPC with streaming messages, tool calls, and permission prompts. The SDK
|
|
99
|
+
is an optional extra:
|
|
100
|
+
|
|
101
|
+
```console
|
|
102
|
+
pip install "copper-pilot-cli[acp]"
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Zed
|
|
106
|
+
|
|
107
|
+
Add an external agent to Zed `settings.json`:
|
|
108
|
+
|
|
109
|
+
```json
|
|
110
|
+
{
|
|
111
|
+
"agent_servers": {
|
|
112
|
+
"CopperPilot": {
|
|
113
|
+
"command": "copper-pilot",
|
|
114
|
+
"args": ["acp"]
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Open the agent panel, pick CopperPilot, and chat. The project root is the
|
|
121
|
+
workspace. The mode picker switches `ask`, `plan`, and `agent`; the `effort`
|
|
122
|
+
option selects Balanced or Intelligence. If no credential is stored the server
|
|
123
|
+
answers `auth_required` and offers a terminal login method that runs
|
|
124
|
+
`copper-pilot auth login`.
|
|
125
|
+
|
|
126
|
+
### Other ACP clients
|
|
127
|
+
|
|
128
|
+
Launch `copper-pilot acp` on stdio. The server implements `initialize`,
|
|
129
|
+
`authenticate`, `session/new`, `session/load`, `session/set_mode`,
|
|
130
|
+
`session/set_config_option`, `session/prompt`, and `session/cancel`.
|
|
131
|
+
`session/load` takes an existing CopperPilot thread id (see
|
|
132
|
+
`copper-pilot threads list`) and replays its messages and tool calls.
|
|
133
|
+
|
|
134
|
+
`initialize` advertises one terminal auth method whose arguments are
|
|
135
|
+
`auth login`. Clients that run it as a standalone command get
|
|
136
|
+
`copper-pilot auth login`; clients that append it to the agent command, such as
|
|
137
|
+
T3 Code, get `copper-pilot acp auth login`, which the CLI treats the same way.
|
|
138
|
+
|
|
139
|
+
Hosted text, reasoning, and status arrive as agent message and thought chunks;
|
|
140
|
+
hosted tool requests and results arrive as `tool_call` and `tool_call_update`.
|
|
141
|
+
A hosted error ends the prompt with a JSON-RPC error whose `details` carry the
|
|
142
|
+
public message.
|
|
143
|
+
|
|
95
144
|
## Approval
|
|
96
145
|
|
|
97
146
|
| Mode | Where | Behavior |
|
|
98
147
|
|------|-------|----------|
|
|
99
148
|
| Manual | Interactive CLI / TUI only | Prompt before gated writes and shell |
|
|
100
|
-
| Auto | Harness default (`-y`, MCP `approval=auto
|
|
101
|
-
| YOLO | Explicit `--yolo
|
|
149
|
+
| Auto | Harness default (`-y`, MCP `approval=auto`, ACP sessions) | Routine writes and known-safe shell |
|
|
150
|
+
| YOLO | Explicit `--yolo`, MCP `approval=yolo`, or ACP "Allow all for this session" | All local side effects. Never saved |
|
|
102
151
|
|
|
103
152
|
MCP cannot show the TUI, so Manual is not available there. `ask` and `plan`
|
|
104
153
|
always use Auto. `run` and `resume` default to Auto.
|
|
105
154
|
|
|
155
|
+
ACP sessions start in Auto. Anything Auto would have prompted for in the TUI
|
|
156
|
+
is sent to the editor as `session/request_permission` with Allow, Allow all
|
|
157
|
+
for this session, and Reject. Choosing "Allow all" puts that session in YOLO
|
|
158
|
+
until the server exits. Hosted clarifying questions that offer options are
|
|
159
|
+
presented the same way, with a Skip choice; free-text questions are declined
|
|
160
|
+
with a pointer to the TUI.
|
|
161
|
+
|
|
106
162
|
`effort` is `balanced` (default) or `intelligence`. Intelligence requires a
|
|
107
163
|
paid plan. It may run server-owned survey subagents; Plan turns survey before
|
|
108
164
|
the parent writes a plan. Progress reports compact worker transitions and the
|