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.
Files changed (149) hide show
  1. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/HISTORY.md +44 -0
  2. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/PKG-INFO +9 -4
  3. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/README.md +5 -3
  4. copper_pilot_cli-0.1.9/VERSION +1 -0
  5. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/docs/cli.md +29 -0
  6. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/docs/harness.md +58 -2
  7. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/pyproject.toml +4 -0
  8. copper_pilot_cli-0.1.9/src/copper_pilot_cli/copper_acp.py +754 -0
  9. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_main.py +52 -4
  10. copper_pilot_cli-0.1.9/tests/test_acp.py +827 -0
  11. copper_pilot_cli-0.1.9/tests/test_main.py +264 -0
  12. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/tests/test_release_gates.py +11 -0
  13. copper_pilot_cli-0.1.8/VERSION +0 -1
  14. copper_pilot_cli-0.1.8/tests/test_main.py +0 -128
  15. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/.claude-plugin/marketplace.json +0 -0
  16. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/.gitignore +0 -0
  17. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/CODE_OF_CONDUCT.md +0 -0
  18. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/CONTRIBUTING.md +0 -0
  19. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/LICENSE +0 -0
  20. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/NOTICE +0 -0
  21. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/SECURITY.md +0 -0
  22. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/SUPPORT.md +0 -0
  23. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/UPSTREAM.md +0 -0
  24. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/docs/assets/esp32-mini-1-h4.gif +0 -0
  25. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/docs/assets/logo-dark.png +0 -0
  26. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/docs/assets/logo-light.png +0 -0
  27. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/docs/assets/logo.png +0 -0
  28. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/docs/development.md +0 -0
  29. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/.gitignore +0 -0
  30. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/001_esp32/.copperpilot/PLANS.md +0 -0
  31. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/001_esp32/.copperpilot/README.md +0 -0
  32. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/001_esp32/.copperpilot/TOOLS.md +0 -0
  33. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/001_esp32/.copperpilot/plans/esp32-dev-board.plan.md +0 -0
  34. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/001_esp32/.gitignore +0 -0
  35. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/001_esp32/README.md +0 -0
  36. {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
  37. {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
  38. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/001_esp32/esp32/esp32.kicad_pcb +0 -0
  39. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/001_esp32/esp32/esp32.kicad_pro +0 -0
  40. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/001_esp32/esp32/esp32.kicad_sch +0 -0
  41. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/001_esp32/esp32/esp32.png +0 -0
  42. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/001_esp32/helper.py +0 -0
  43. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/001_esp32/main.py +0 -0
  44. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/.copperpilot/PLANS.md +0 -0
  45. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/.copperpilot/README.md +0 -0
  46. {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
  47. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/.gitignore +0 -0
  48. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/README.md +0 -0
  49. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/assembly_spec.json +0 -0
  50. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/3dmodels/CM4.step +0 -0
  51. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/3dmodels/CM5.step +0 -0
  52. {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
  53. {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
  54. {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
  55. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/CM5.3dshapes/5033981892.stp +0 -0
  56. {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
  57. {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
  58. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/CM5.3dshapes/SRP5030CC.stp +0 -0
  59. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.kicad_dru +0 -0
  60. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.kicad_pcb +0 -0
  61. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.kicad_pro +0 -0
  62. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.kicad_sch +0 -0
  63. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.kicad_sym +0 -0
  64. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.png +0 -0
  65. {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
  66. {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
  67. {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
  68. {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
  69. {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
  70. {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
  71. {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
  72. {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
  73. {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
  74. {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
  75. {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
  76. {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
  77. {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
  78. {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
  79. {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
  80. {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
  81. {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
  82. {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
  83. {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
  84. {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
  85. {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
  86. {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
  87. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera_bottom.png +0 -0
  88. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/fp-lib-table +0 -0
  89. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/sym-lib-table +0 -0
  90. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/generate_3d_models.py +0 -0
  91. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/helper.py +0 -0
  92. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/main.py +0 -0
  93. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/plugins/copper-pilot/.claude-plugin/plugin.json +0 -0
  94. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/plugins/copper-pilot/.mcp.json +0 -0
  95. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/plugins/copper-pilot/agents/copper-pilot.md +0 -0
  96. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/plugins/copper-pilot/skills/copper-pilot-review/SKILL.md +0 -0
  97. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/skills/copper-pilot-review/SKILL.md +0 -0
  98. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/__init__.py +0 -0
  99. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/__main__.py +0 -0
  100. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/_upstream/__init__.py +0 -0
  101. {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
  102. {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
  103. {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
  104. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/_version.py +0 -0
  105. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/clipboard.py +0 -0
  106. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_api.py +0 -0
  107. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_app.py +0 -0
  108. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_auth.py +0 -0
  109. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_config.py +0 -0
  110. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_features.py +0 -0
  111. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_graph.py +0 -0
  112. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_hooks.py +0 -0
  113. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_mcp.py +0 -0
  114. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_preferences.py +0 -0
  115. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_presentation.py +0 -0
  116. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_protocol.py +0 -0
  117. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_status_events.py +0 -0
  118. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_theme.py +0 -0
  119. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_tools.py +0 -0
  120. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_update.py +0 -0
  121. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_widgets.py +0 -0
  122. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_workspace.py +0 -0
  123. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/deepagents_tools.py +0 -0
  124. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/diagnostics.py +0 -0
  125. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/langchain.py +0 -0
  126. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/media_utils.py +0 -0
  127. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/py.typed +0 -0
  128. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/sessions.py +0 -0
  129. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/textual_patches.py +0 -0
  130. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/tests/test_auth.py +0 -0
  131. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/tests/test_clipboard.py +0 -0
  132. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/tests/test_cm5_camera_example.py +0 -0
  133. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/tests/test_copper_api.py +0 -0
  134. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/tests/test_e2e.py +0 -0
  135. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/tests/test_esp32_example.py +0 -0
  136. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/tests/test_features.py +0 -0
  137. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/tests/test_langchain.py +0 -0
  138. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/tests/test_live_chat_e2e.py +0 -0
  139. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/tests/test_mcp.py +0 -0
  140. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/tests/test_plugin_manifest.py +0 -0
  141. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/tests/test_preferences.py +0 -0
  142. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/tests/test_presentation.py +0 -0
  143. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/tests/test_protocol.py +0 -0
  144. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/tests/test_sessions.py +0 -0
  145. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/tests/test_status_events.py +0 -0
  146. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/tests/test_tools.py +0 -0
  147. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/tests/test_tui.py +0 -0
  148. {copper_pilot_cli-0.1.8 → copper_pilot_cli-0.1.9}/tests/test_upstream_provenance.py +0 -0
  149. {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.8
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`. Setup for Cursor, Codex, and approvals:
141
- [docs/harness.md](docs/harness.md).
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`) that delegates to the hosted agent is.
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`. Setup for Cursor, Codex, and approvals:
90
- [docs/harness.md](docs/harness.md).
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`) that delegates to the hosted agent is.
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`) | Routine writes and known-safe shell |
101
- | YOLO | Explicit `--yolo` or MCP `approval=yolo` | All local side effects. Never saved |
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
@@ -42,7 +42,11 @@ dependencies = [
42
42
  ]
43
43
 
44
44
  [project.optional-dependencies]
45
+ acp = [
46
+ "agent-client-protocol>=0.12,<1",
47
+ ]
45
48
  dev = [
49
+ "agent-client-protocol>=0.12,<1",
46
50
  "build>=1.4,<2",
47
51
  "gitchangelog==3.0.4",
48
52
  "pip-audit>=2.10,<3",