copper-pilot-cli 0.1.7__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 (152) hide show
  1. copper_pilot_cli-0.1.9/HISTORY.md +261 -0
  2. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/PKG-INFO +23 -9
  3. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/README.md +16 -5
  4. copper_pilot_cli-0.1.9/VERSION +1 -0
  5. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/docs/cli.md +84 -4
  6. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/docs/development.md +34 -0
  7. copper_pilot_cli-0.1.9/docs/harness.md +176 -0
  8. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/plugins/copper-pilot/agents/copper-pilot.md +2 -0
  9. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/pyproject.toml +7 -3
  10. copper_pilot_cli-0.1.9/src/copper_pilot_cli/copper_acp.py +754 -0
  11. copper_pilot_cli-0.1.9/src/copper_pilot_cli/copper_api.py +77 -0
  12. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_app.py +145 -15
  13. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_auth.py +2 -1
  14. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_graph.py +43 -4
  15. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_main.py +94 -9
  16. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_mcp.py +89 -8
  17. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_protocol.py +127 -18
  18. copper_pilot_cli-0.1.9/src/copper_pilot_cli/copper_status_events.py +76 -0
  19. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_widgets.py +18 -1
  20. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/deepagents_tools.py +5 -6
  21. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/langchain.py +9 -0
  22. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/sessions.py +3 -3
  23. copper_pilot_cli-0.1.9/tests/test_acp.py +827 -0
  24. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/tests/test_auth.py +2 -0
  25. copper_pilot_cli-0.1.9/tests/test_copper_api.py +63 -0
  26. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/tests/test_langchain.py +21 -2
  27. copper_pilot_cli-0.1.9/tests/test_main.py +264 -0
  28. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/tests/test_mcp.py +84 -2
  29. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/tests/test_protocol.py +129 -0
  30. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/tests/test_release_gates.py +12 -1
  31. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/tests/test_sessions.py +71 -2
  32. copper_pilot_cli-0.1.9/tests/test_status_events.py +51 -0
  33. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/tests/test_tools.py +29 -0
  34. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/tests/test_tui.py +188 -7
  35. copper_pilot_cli-0.1.7/HISTORY.md +0 -95
  36. copper_pilot_cli-0.1.7/VERSION +0 -1
  37. copper_pilot_cli-0.1.7/docs/harness.md +0 -108
  38. copper_pilot_cli-0.1.7/src/copper_pilot_cli/copper_api.py +0 -24
  39. copper_pilot_cli-0.1.7/tests/test_main.py +0 -114
  40. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/.claude-plugin/marketplace.json +0 -0
  41. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/.gitignore +0 -0
  42. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/CODE_OF_CONDUCT.md +0 -0
  43. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/CONTRIBUTING.md +0 -0
  44. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/LICENSE +0 -0
  45. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/NOTICE +0 -0
  46. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/SECURITY.md +0 -0
  47. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/SUPPORT.md +0 -0
  48. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/UPSTREAM.md +0 -0
  49. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/docs/assets/esp32-mini-1-h4.gif +0 -0
  50. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/docs/assets/logo-dark.png +0 -0
  51. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/docs/assets/logo-light.png +0 -0
  52. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/docs/assets/logo.png +0 -0
  53. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/.gitignore +0 -0
  54. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/001_esp32/.copperpilot/PLANS.md +0 -0
  55. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/001_esp32/.copperpilot/README.md +0 -0
  56. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/001_esp32/.copperpilot/TOOLS.md +0 -0
  57. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/001_esp32/.copperpilot/plans/esp32-dev-board.plan.md +0 -0
  58. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/001_esp32/.gitignore +0 -0
  59. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/001_esp32/README.md +0 -0
  60. {copper_pilot_cli-0.1.7 → 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
  61. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/001_esp32/esp32/3d-models/TYPE-C-31-M-12.step +0 -0
  62. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/001_esp32/esp32/esp32.kicad_pcb +0 -0
  63. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/001_esp32/esp32/esp32.kicad_pro +0 -0
  64. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/001_esp32/esp32/esp32.kicad_sch +0 -0
  65. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/001_esp32/esp32/esp32.png +0 -0
  66. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/001_esp32/helper.py +0 -0
  67. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/001_esp32/main.py +0 -0
  68. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/.copperpilot/PLANS.md +0 -0
  69. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/.copperpilot/README.md +0 -0
  70. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/.copperpilot/plans/cm5-camera-carrier.plan.md +0 -0
  71. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/.gitignore +0 -0
  72. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/README.md +0 -0
  73. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/assembly_spec.json +0 -0
  74. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/3dmodels/CM4.step +0 -0
  75. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/3dmodels/CM5.step +0 -0
  76. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/3dmodels/Camera_IMX219-D160.step +0 -0
  77. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/3dmodels/USB_A_Molex_105057-0001_Vertical.wrl +0 -0
  78. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/3dmodels/USB_A_vertical.step +0 -0
  79. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/CM5.3dshapes/5033981892.stp +0 -0
  80. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/CM5.3dshapes/DF40C-100DS.stp +0 -0
  81. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/CM5.3dshapes/JTHDA-19F08.STEP +0 -0
  82. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/CM5.3dshapes/SRP5030CC.stp +0 -0
  83. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.kicad_dru +0 -0
  84. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.kicad_pcb +0 -0
  85. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.kicad_pro +0 -0
  86. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.kicad_sch +0 -0
  87. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.kicad_sym +0 -0
  88. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.png +0 -0
  89. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/C_0402_1005Metric.kicad_mod +0 -0
  90. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/C_0805_2012Metric.kicad_mod +0 -0
  91. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/Camera_Module_IMX219-D160.kicad_mod +0 -0
  92. {copper_pilot_cli-0.1.7 → 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
  93. {copper_pilot_cli-0.1.7 → 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
  94. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/LED_0603_1608Metric.kicad_mod +0 -0
  95. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/L_Bourns_SRP5030CC.kicad_mod +0 -0
  96. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/L_CommonModeChoke_Coilank_ACM1210.kicad_mod +0 -0
  97. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/MOLEX_USB_67298-4090.kicad_mod +0 -0
  98. {copper_pilot_cli-0.1.7 → 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
  99. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/PinHeader_1x03_P2.54mm_Vertical.kicad_mod +0 -0
  100. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/PinHeader_2x20_P2.54mm_Vertical.kicad_mod +0 -0
  101. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/R_0402_1005Metric.kicad_mod +0 -0
  102. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/R_0603_1608Metric.kicad_mod +0 -0
  103. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/Raspberry-Pi-4-Compute-Module.kicad_mod +0 -0
  104. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/SDCARD_MOLEX_503398-1892.kicad_mod +0 -0
  105. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/SOT-23-5.kicad_mod +0 -0
  106. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/SW_SPST_PTS645Sx43SMTR92.kicad_mod +0 -0
  107. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/TSOT-23-6.kicad_mod +0 -0
  108. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/Texas_DRT-3.kicad_mod +0 -0
  109. {copper_pilot_cli-0.1.7 → 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
  110. {copper_pilot_cli-0.1.7 → 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
  111. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/cm5_camera_bottom.png +0 -0
  112. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/fp-lib-table +0 -0
  113. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/cm5_camera/sym-lib-table +0 -0
  114. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/generate_3d_models.py +0 -0
  115. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/helper.py +0 -0
  116. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/examples/002_cm5_camera/main.py +0 -0
  117. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/plugins/copper-pilot/.claude-plugin/plugin.json +0 -0
  118. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/plugins/copper-pilot/.mcp.json +0 -0
  119. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/plugins/copper-pilot/skills/copper-pilot-review/SKILL.md +0 -0
  120. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/skills/copper-pilot-review/SKILL.md +0 -0
  121. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/__init__.py +0 -0
  122. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/__main__.py +0 -0
  123. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/_upstream/__init__.py +0 -0
  124. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/_upstream/dcode_0_1_69/PROVENANCE.json +0 -0
  125. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/_upstream/dcode_0_1_69/__init__.py +0 -0
  126. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/_upstream/dcode_0_1_69/diff_utils.py +0 -0
  127. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/_version.py +0 -0
  128. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/clipboard.py +0 -0
  129. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_config.py +0 -0
  130. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_features.py +0 -0
  131. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_hooks.py +0 -0
  132. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_preferences.py +0 -0
  133. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_presentation.py +0 -0
  134. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_theme.py +0 -0
  135. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_tools.py +0 -0
  136. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_update.py +0 -0
  137. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/copper_workspace.py +0 -0
  138. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/diagnostics.py +0 -0
  139. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/media_utils.py +0 -0
  140. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/py.typed +0 -0
  141. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/src/copper_pilot_cli/textual_patches.py +0 -0
  142. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/tests/test_clipboard.py +0 -0
  143. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/tests/test_cm5_camera_example.py +0 -0
  144. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/tests/test_e2e.py +0 -0
  145. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/tests/test_esp32_example.py +0 -0
  146. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/tests/test_features.py +0 -0
  147. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/tests/test_live_chat_e2e.py +0 -0
  148. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/tests/test_plugin_manifest.py +0 -0
  149. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/tests/test_preferences.py +0 -0
  150. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/tests/test_presentation.py +0 -0
  151. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/tests/test_upstream_provenance.py +0 -0
  152. {copper_pilot_cli-0.1.7 → copper_pilot_cli-0.1.9}/tests/test_workspace.py +0 -0
@@ -0,0 +1,261 @@
1
+ Changelog
2
+ =========
3
+
4
+
5
+ (unreleased)
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
+ ------------------
50
+
51
+ Fix
52
+ ~~~
53
+ - Annotate async context managers for ty 0.0.87. [AdityaNG]
54
+
55
+ CI resolves the unpinned ty dependency to 0.0.87, which rejects AsyncIterator returns on asynccontextmanager.
56
+ - Upgrade the pinned Deep Agents runtime to 0.7.19. [AdityaNG]
57
+
58
+ Keep the exact runtime pin while picking up the filesystem and media-handling fixes from 0.7.14.
59
+ - Align the CLI with hosted usage limits. [AdityaNG]
60
+
61
+ Keep blocked turns machine-readable, shrink oversized resumed chats to the desktop frame budget, and report the installed client version.
62
+
63
+ Other
64
+ ~~~~~
65
+ - Release: version 0.1.8 🚀 [AdityaNG]
66
+ - Merge pull request #16 from CopperPilot/update/14_oct_2026. [Aditya]
67
+
68
+ Add Intelligence effort, hosted survey workers, and modal keyboard focus
69
+ - Fix(tests/test_tui.py) [AdityaNG]
70
+ - Feat(src/copper_pilot_cli/copper_status_events.py) [AdityaNG]
71
+ - Merge pull request #3 from
72
+ CopperPilot/dependabot/github_actions/softprops/action-gh-release-3.
73
+ [Aditya]
74
+
75
+ build(deps): bump softprops/action-gh-release from 2 to 3
76
+ - Build(deps): bump softprops/action-gh-release from 2 to 3.
77
+ [dependabot[bot]]
78
+
79
+ Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2 to 3.
80
+ - [Release notes](https://github.com/softprops/action-gh-release/releases)
81
+ - [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
82
+ - [Commits](https://github.com/softprops/action-gh-release/compare/v2...v3)
83
+
84
+ ---
85
+ updated-dependencies:
86
+ - dependency-name: softprops/action-gh-release
87
+ dependency-version: '3'
88
+ dependency-type: direct:production
89
+ update-type: version-update:semver-major
90
+ ...
91
+ - Merge pull request #4 from CopperPilot/dependabot/pip/websockets-
92
+ gte-15-and-lt-18. [Aditya]
93
+
94
+ build(deps): update websockets requirement from <17,>=15 to >=15,<18
95
+ - Build(deps): update websockets requirement from <17,>=15 to >=15,<18.
96
+ [dependabot[bot]]
97
+
98
+ Updates the requirements on [websockets](https://github.com/python-websockets/websockets) to permit the latest version.
99
+ - [Release notes](https://github.com/python-websockets/websockets/releases)
100
+ - [Commits](https://github.com/python-websockets/websockets/compare/15.0...17.1)
101
+
102
+ ---
103
+ updated-dependencies:
104
+ - dependency-name: websockets
105
+ dependency-version: '17.1'
106
+ dependency-type: direct:production
107
+ ...
108
+ - Merge pull request #5 from CopperPilot/dependabot/pip/uuid-utils-
109
+ gte-0.12-and-lt-2. [Aditya]
110
+
111
+ build(deps): update uuid-utils requirement from <1,>=0.12 to >=0.12,<2
112
+ - Build(deps): update uuid-utils requirement from <1,>=0.12 to
113
+ >=0.12,<2. [dependabot[bot]]
114
+
115
+ Updates the requirements on [uuid-utils](https://github.com/aminalaee/uuid-utils) to permit the latest version.
116
+ - [Release notes](https://github.com/aminalaee/uuid-utils/releases)
117
+ - [Commits](https://github.com/aminalaee/uuid-utils/compare/0.12.0...1.0.0)
118
+
119
+ ---
120
+ updated-dependencies:
121
+ - dependency-name: uuid-utils
122
+ dependency-version: 1.0.0
123
+ dependency-type: direct:production
124
+ ...
125
+ - Merge pull request #2 from
126
+ CopperPilot/dependabot/github_actions/actions/setup-python-7. [Aditya]
127
+
128
+ build(deps): bump actions/setup-python from 5 to 7
129
+ - Build(deps): bump actions/setup-python from 5 to 7. [dependabot[bot]]
130
+
131
+ Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5 to 7.
132
+ - [Release notes](https://github.com/actions/setup-python/releases)
133
+ - [Commits](https://github.com/actions/setup-python/compare/v5...v7)
134
+
135
+ ---
136
+ updated-dependencies:
137
+ - dependency-name: actions/setup-python
138
+ dependency-version: '7'
139
+ dependency-type: direct:production
140
+ update-type: version-update:semver-major
141
+ ...
142
+ - Merge pull request #13 from
143
+ CopperPilot/update/deepagents_0_7_19_3_oct. [Aditya]
144
+
145
+ Upgrade the pinned Deep Agents runtime to 0.7.19
146
+ - Merge pull request #1 from
147
+ CopperPilot/dependabot/github_actions/actions/checkout-7. [Aditya]
148
+
149
+ build(deps): bump actions/checkout from 4 to 7
150
+ - Build(deps): bump actions/checkout from 4 to 7. [dependabot[bot]]
151
+
152
+ Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 7.
153
+ - [Release notes](https://github.com/actions/checkout/releases)
154
+ - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
155
+ - [Commits](https://github.com/actions/checkout/compare/v4...v7)
156
+
157
+ ---
158
+ updated-dependencies:
159
+ - dependency-name: actions/checkout
160
+ dependency-version: '7'
161
+ dependency-type: direct:production
162
+ update-type: version-update:semver-major
163
+ ...
164
+ - Merge pull request #12 from
165
+ CopperPilot/update/contract_alignment_3_oct. [Aditya]
166
+
167
+ Align the CLI with hosted usage limits
168
+
169
+
170
+ 0.1.7 (2026-10-03)
171
+ ------------------
172
+ - Release: version 0.1.7 🚀 [AdityaNG]
173
+ - Merge pull request #11 from
174
+ CopperPilot/feat/python_versions_support_expansion. [Aditya]
175
+
176
+ Support Python 3.11 and future releases
177
+ - Ci: probe Python 3.15 weekly instead of on pull requests. [AdityaNG]
178
+
179
+ Keep the upstream install failure visible without turning required pull request checks red.
180
+ - Feat(py11) [AdityaNG]
181
+ - Merge pull request #7 from CopperPilot/feat/example_002_cm5_camera.
182
+ [Aditya]
183
+
184
+ feat(examples/002_cm5_camera): add 3D pose audit and generated carrier
185
+ - Fix(examples/002_cm5_camera): render the README PCB as a dimetric 3D
186
+ view. [AdityaNG, Cursor]
187
+
188
+ Use an orthogonal high-quality camera with a slight isometric tilt so the
189
+ hero PNG shows connector height instead of a flat top-down shot.
190
+ - Fix(examples/002_cm5_camera): skip library dirs relative to the
191
+ workspace. [AdityaNG, Cursor]
192
+
193
+ Absolute path parts named tmp (Linux /tmp pytest roots) were skipping the
194
+ entire haystack, so libraries_ready failed on Ubuntu CI.
195
+ - Feat(examples/002_cm5_camera): add 3D pose audit and generated
196
+ carrier. [AdityaNG, Cursor]
197
+
198
+ Lock connector 3D offsets, Module1 pad orientation, and the generated
199
+ KiCad project so the example reproduces NANO-C assembly parity.
200
+ - Feat(examples/002_cm5_camera/main.py): new example. [AdityaNG]
201
+
202
+
203
+ 0.1.6 (2026-09-18)
204
+ ------------------
205
+ - Release: version 0.1.6 🚀 [AdityaNG]
206
+ - Merge pull request #6 from CopperPilot/feat/plugins. [Aditya]
207
+
208
+ feat: add MCP conductor and Claude Code plugin
209
+ - Clarify server restrictions in PR template. [Aditya]
210
+
211
+ Updated checklist item to clarify server restrictions.
212
+ - Feat: add MCP conductor and Claude Code plugin. [AdityaNG, Cursor]
213
+
214
+ 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.
215
+
216
+
217
+ 0.1.5 (2026-09-17)
218
+ ------------------
219
+ - Release: version 0.1.5 🚀 [AdityaNG]
220
+ - Fix(README.md) [AdityaNG]
221
+
222
+
223
+ 0.1.4 (2026-09-17)
224
+ ------------------
225
+ - Release: version 0.1.4 🚀 [AdityaNG]
226
+ - Fix(tests/test_release_gates.py) [AdityaNG]
227
+
228
+
229
+ 0.1.3 (2026-09-17)
230
+ ------------------
231
+ - Release: version 0.1.3 🚀 [AdityaNG]
232
+ - Docs. [AdityaNG]
233
+
234
+
235
+ 0.1.2 (2026-09-17)
236
+ ------------------
237
+ - Release: version 0.1.2 🚀 [AdityaNG]
238
+ - Ci(pyproject.toml) [AdityaNG]
239
+ - Fix(tests/test_tui.py) [AdityaNG]
240
+
241
+
242
+ 0.1.1 (2026-09-17)
243
+ ------------------
244
+ - Release: version 0.1.1 🚀 [AdityaNG]
245
+
246
+
247
+ 0.1.0 (2026-09-17)
248
+ ------------------
249
+ - Release: version 0.1.0 🚀 [AdityaNG]
250
+ - Fix(tests/test_release_gates.py) [AdityaNG]
251
+ - Test. [AdityaNG]
252
+ - Docs. [AdityaNG]
253
+ - Docs. [AdityaNG]
254
+ - Example(examples/001_esp32/) [AdityaNG]
255
+ - Makefile. [AdityaNG]
256
+ - Ci. [AdityaNG]
257
+ - Docs. [AdityaNG]
258
+ - Refactor(name) [AdityaNG]
259
+ - Init. [AdityaNG]
260
+
261
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: copper-pilot-cli
3
- Version: 0.1.7
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
@@ -21,7 +21,7 @@ Classifier: Programming Language :: Python :: 3.14
21
21
  Requires-Python: >=3.11
22
22
  Requires-Dist: aiosqlite<1,>=0.22
23
23
  Requires-Dist: certifi>=2024.8.30
24
- Requires-Dist: deepagents==0.7.14
24
+ Requires-Dist: deepagents==0.7.19
25
25
  Requires-Dist: httpx<1,>=0.28
26
26
  Requires-Dist: langchain-core<2,>=1.6
27
27
  Requires-Dist: langgraph-checkpoint-sqlite<4,>=3.1
@@ -35,9 +35,12 @@ Requires-Dist: pyperclip<2,>=1.11
35
35
  Requires-Dist: pyyaml<7,>=6
36
36
  Requires-Dist: rich<16,>=15
37
37
  Requires-Dist: textual<9,>=8.2.8
38
- Requires-Dist: uuid-utils<1,>=0.12
39
- Requires-Dist: websockets<17,>=15
38
+ Requires-Dist: uuid-utils<2,>=0.12
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'
@@ -107,12 +110,18 @@ copper-pilot ./my-board
107
110
  copper-pilot --resume
108
111
  copper-pilot threads list
109
112
  copper-pilot -n -m "Review this board" --json
113
+ copper-pilot --mode plan --effort intelligence -m "Survey and plan this board"
110
114
  ```
111
115
 
112
116
  Both `copper-pilot` and `copper-pilot-cli` run the same program.
113
117
  `copper-pilot --help` lists flags; [docs/cli.md](docs/cli.md) is the full
114
118
  command reference.
115
119
 
120
+ Balanced effort is the default. Paid-plan users can select Intelligence with
121
+ `--effort intelligence` or interactive `/effort`. Intelligence uses
122
+ server-owned survey subagents and shows their lifecycle through the existing
123
+ Deep Agents task rows; Intelligence Plan turns survey before writing a plan.
124
+
116
125
  ## Use from Claude Code, Cursor, or Codex
117
126
 
118
127
  CopperPilot stays the electronics agent. Copy
@@ -131,8 +140,9 @@ Claude Code can also install the in-repo plugin:
131
140
  ```
132
141
 
133
142
  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).
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).
136
146
 
137
147
  ## Configuration
138
148
 
@@ -147,13 +157,16 @@ the parent directory is mode `0700` and the file is mode `0600`.
147
157
  ## LangChain
148
158
 
149
159
  ```python
150
- from copper_pilot_cli.copper_protocol import CopperMode
160
+ from copper_pilot_cli.copper_protocol import CopperEffort, CopperMode
151
161
  from copper_pilot_cli.langchain import CopperPilotAgent
152
162
  from helper import drc_violations, erc_errors, render_pcb, run
153
163
 
154
164
  PLAN = CopperMode.PLAN
155
165
 
156
- copper_pilot = CopperPilotAgent(workspace="esp32")
166
+ copper_pilot = CopperPilotAgent(
167
+ workspace="esp32",
168
+ effort=CopperEffort.INTELLIGENCE,
169
+ )
157
170
 
158
171
  run(copper_pilot, "Build me an ESP32 dev board.", PLAN)
159
172
  run(copper_pilot, "Let us build this plan.")
@@ -188,7 +201,8 @@ normalizes hosted tool names, approval decisions, and result envelopes.
188
201
  Computer use, model/provider selection, local model execution, LangSmith
189
202
  tracing, content telemetry, MCP **host**/plugin-runtime controls, and server
190
203
  implementation code are not part of this package. A thin MCP **server**
191
- (`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.
192
206
 
193
207
  See [UPSTREAM.md](UPSTREAM.md) and [NOTICE](NOTICE) for the retained Textual
194
208
  client attribution.
@@ -56,12 +56,18 @@ copper-pilot ./my-board
56
56
  copper-pilot --resume
57
57
  copper-pilot threads list
58
58
  copper-pilot -n -m "Review this board" --json
59
+ copper-pilot --mode plan --effort intelligence -m "Survey and plan this board"
59
60
  ```
60
61
 
61
62
  Both `copper-pilot` and `copper-pilot-cli` run the same program.
62
63
  `copper-pilot --help` lists flags; [docs/cli.md](docs/cli.md) is the full
63
64
  command reference.
64
65
 
66
+ Balanced effort is the default. Paid-plan users can select Intelligence with
67
+ `--effort intelligence` or interactive `/effort`. Intelligence uses
68
+ server-owned survey subagents and shows their lifecycle through the existing
69
+ Deep Agents task rows; Intelligence Plan turns survey before writing a plan.
70
+
65
71
  ## Use from Claude Code, Cursor, or Codex
66
72
 
67
73
  CopperPilot stays the electronics agent. Copy
@@ -80,8 +86,9 @@ Claude Code can also install the in-repo plugin:
80
86
  ```
81
87
 
82
88
  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).
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).
85
92
 
86
93
  ## Configuration
87
94
 
@@ -96,13 +103,16 @@ the parent directory is mode `0700` and the file is mode `0600`.
96
103
  ## LangChain
97
104
 
98
105
  ```python
99
- from copper_pilot_cli.copper_protocol import CopperMode
106
+ from copper_pilot_cli.copper_protocol import CopperEffort, CopperMode
100
107
  from copper_pilot_cli.langchain import CopperPilotAgent
101
108
  from helper import drc_violations, erc_errors, render_pcb, run
102
109
 
103
110
  PLAN = CopperMode.PLAN
104
111
 
105
- copper_pilot = CopperPilotAgent(workspace="esp32")
112
+ copper_pilot = CopperPilotAgent(
113
+ workspace="esp32",
114
+ effort=CopperEffort.INTELLIGENCE,
115
+ )
106
116
 
107
117
  run(copper_pilot, "Build me an ESP32 dev board.", PLAN)
108
118
  run(copper_pilot, "Let us build this plan.")
@@ -137,7 +147,8 @@ normalizes hosted tool names, approval decisions, and result envelopes.
137
147
  Computer use, model/provider selection, local model execution, LangSmith
138
148
  tracing, content telemetry, MCP **host**/plugin-runtime controls, and server
139
149
  implementation code are not part of this package. A thin MCP **server**
140
- (`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.
141
152
 
142
153
  See [UPSTREAM.md](UPSTREAM.md) and [NOTICE](NOTICE) for the retained Textual
143
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`.
@@ -30,6 +31,7 @@ valid.
30
31
  | `--no-stream` | Print the final assistant message after the run instead of streaming. |
31
32
  | `--json` | Emit JSON events (or a final JSON document with `--no-stream`). |
32
33
  | `--mode {agent,plan,ask}` | Hosted chat mode. Default: `agent`. |
34
+ | `--effort {balanced,intelligence}` | Hosted effort. Default: `balanced`; Intelligence requires a paid plan. |
33
35
  | `-y`, `--auto-approve` | Auto approval: routine writes and known-safe shell still run; unknown actions prompt. |
34
36
  | `--yolo` | Permit local side effects without prompting. Must be set explicitly. |
35
37
  | `--version` | Print the package version. |
@@ -41,6 +43,7 @@ copper-pilot ./my-board
41
43
  copper-pilot --resume
42
44
  copper-pilot -n -m "Review this board" --json
43
45
  copper-pilot ./my-board --mode plan -m "Propose a power tree"
46
+ copper-pilot ./my-board --mode plan --effort intelligence -m "Survey and plan the power tree"
44
47
  ```
45
48
 
46
49
  Headless mode is also used when `--message` is set and stdout is not a TTY.
@@ -60,15 +63,61 @@ write to stdout; the protocol owns it.
60
63
  | Tool | Role |
61
64
  |------|------|
62
65
  | `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`. |
66
+ | `ask` | `--mode ask`. Auto approval. Optional `thread_id` and `effort`. |
67
+ | `plan` | `--mode plan`. Auto approval. Optional `effort`. |
68
+ | `run` | `--mode agent`. Optional `effort`; `approval` is `auto` (default) or `yolo`. |
69
+ | `resume` | Continue `thread_id`. Optional `mode`, `effort`, and the same approval as `run`. |
67
70
  | `threads_list` | List threads for this workspace (`limit`, `all_workspaces`). |
68
71
 
69
72
  Workspace is the tool argument, else `CLAUDE_PROJECT_DIR`, else the process
70
73
  current directory. Manual approval is TUI-only. See [harness.md](harness.md).
71
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
+
103
+ ## Effort and Intelligence
104
+
105
+ Balanced is the default. Intelligence is available on paid plans and lets the
106
+ hosted parent run one to four survey subagents. Intelligence Plan turns survey
107
+ before creating or revising a plan. Workers are server-owned, survey-only, and
108
+ appear in the TUI through the existing Deep Agents task rows; they do not open
109
+ nested chats or execute through the local tool broker.
110
+
111
+ The interactive `/effort` command changes effort for the current thread.
112
+ Resuming that thread restores it; a new thread starts Balanced. In headless
113
+ text mode, worker state changes print as compact lines. `--json` retains raw
114
+ `status_event` objects.
115
+
116
+ Interactive clarification can offer suggested answers, custom text, or Skip
117
+ and waits without a client timeout. Headless and MCP calls cannot present that
118
+ UI, so an `ask_user_question` tool request is rejected with a clear error
119
+ instead of guessing or auto-skipping.
120
+
72
121
  ## Auth
73
122
 
74
123
  ```console
@@ -118,6 +167,37 @@ searches run freely. Writes, edits, deletes, and shell commands are gated:
118
167
 
119
168
  `--yolo` wins over `--auto-approve`. Saved preferences never enable YOLO.
120
169
 
170
+ ## Usage limits
171
+
172
+ The hosted service owns weekly and window usage. The CLI does not show raw
173
+ token balances, sell credits, or complete checkout.
174
+
175
+ Inside the interactive app, `/tokens` prints the current window as a
176
+ percentage, the next refresh time, and any additional-usage state.
177
+ `/tokens json` prints the member-safe API payload instead.
178
+
179
+ A blocked turn stays readable in `--json` output. An error event uses `data`
180
+ as an object:
181
+
182
+ ```json
183
+ {
184
+ "type": "error",
185
+ "data": {
186
+ "message": "Usage limit reached.",
187
+ "code": "http_402",
188
+ "status": 402,
189
+ "block_reason": "weekly",
190
+ "can_purchase_overage": true,
191
+ "retryable": false
192
+ }
193
+ }
194
+ ```
195
+
196
+ `block_reason` is `window`, `weekly`, `cost_cap`, `busy`, or `billing` when
197
+ the server sends one. A `busy` block and an ordinary rate limit use status
198
+ `429` with `retryable: true`. `can_purchase_overage` only says whether the
199
+ billing page can offer additional usage. The Textual UI prints `message`.
200
+
121
201
  ## Configuration
122
202
 
123
203
  | Setting | Location |
@@ -56,6 +56,40 @@ unreleased Python.
56
56
 
57
57
  Do not commit credentials, `.venv/`, or `dist/`.
58
58
 
59
+ ## Hosted protocol
60
+
61
+ The client speaks protocol v1. Agent turns, and plan turns that carry plan
62
+ context, use `/api/copperpilot/analyze/agent/ws`. Ask turns and plan turns
63
+ without that context use `/api/copperpilot/analyze/chat/ws`.
64
+
65
+ `make_chat_start` in `copper_protocol.py` bounds history before the socket
66
+ send, matching the desktop harness:
67
+
68
+ | Attempt | Message cap | History cap | Frame cap |
69
+ |---------|-------------|-------------|-----------|
70
+ | 1 | 64 KiB | 4 MiB | 12 MiB |
71
+ | 2 | 32 KiB | 2 MiB | 8 MiB |
72
+ | 3 | 8 KiB | 128 KiB | 8 MiB |
73
+ | 4 | 4 KiB | 64 KiB | 8 MiB |
74
+
75
+ History is kept newest-first. Inline `data:` attachments are replaced before
76
+ the byte caps apply. A query or workspace snapshot that still cannot fit
77
+ raises `ProtocolError` with `code="PAYLOAD_TOO_LARGE"`.
78
+
79
+ A WebSocket `error` frame keeps `code`, `status`, `block_reason`,
80
+ `can_purchase_overage`, and `retryable` on both `ProtocolError` and the
81
+ `copper.error` event. Absent fields stay absent. The interactive UI and MCP
82
+ `error` string use `public_message`; `--json` and the MCP event digest keep
83
+ the object.
84
+
85
+ Device login and the WebSocket `User-Agent` (`CopperPilot CLI/<version>`)
86
+ read the installed package version. That version comes from `VERSION`.
87
+
88
+ `POST /api/copperpilot/analyze/token_limits` is the account-usage read. It
89
+ returns percentages and reset state even when chat is blocked. Do not add
90
+ token counts, plan allocations, Stripe checkout, or a per-chat context meter
91
+ here. The server does not expose those on this contract.
92
+
59
93
  ## Release
60
94
 
61
95
  Version is the contents of [`VERSION`](../VERSION). `make release` writes that