lcode-cli 0.18.0__tar.gz → 0.19.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/CHANGELOG.md +18 -1
  2. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/PKG-INFO +3 -2
  3. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/README.md +2 -1
  4. lcode_cli-0.19.0/docs/editors.md +85 -0
  5. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/docs/quickstart.md +1 -1
  6. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/docs/usage.md +1 -0
  7. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/mkdocs.yml +1 -0
  8. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/pyproject.toml +1 -0
  9. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/__init__.py +1 -1
  10. lcode_cli-0.19.0/src/lcode/acp.py +635 -0
  11. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/agent.py +11 -0
  12. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/cli.py +12 -0
  13. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/permissions.py +5 -3
  14. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/planning.py +5 -0
  15. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/tools.py +20 -5
  16. lcode_cli-0.19.0/tests/test_acp.py +267 -0
  17. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/tests/test_api.py +6 -1
  18. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/.editorconfig +0 -0
  19. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/.github/CODEOWNERS +0 -0
  20. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  21. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  22. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  23. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/.github/ISSUE_TEMPLATE/model_request.yml +0 -0
  24. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  25. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/.github/dependabot.yml +0 -0
  26. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/.github/workflows/ci.yml +0 -0
  27. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/.github/workflows/docs.yml +0 -0
  28. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/.github/workflows/release.yml +0 -0
  29. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/.gitignore +0 -0
  30. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/.pre-commit-config.yaml +0 -0
  31. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/AGENTS.md +0 -0
  32. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/CODE_OF_CONDUCT.md +0 -0
  33. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/CONTRIBUTING.md +0 -0
  34. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/LICENSE +0 -0
  35. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/SECURITY.md +0 -0
  36. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/action.yml +0 -0
  37. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/docs/agents.md +0 -0
  38. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/docs/assets/demo.svg +0 -0
  39. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/docs/assets/extra.css +0 -0
  40. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/docs/assets/logo.svg +0 -0
  41. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/docs/assets/social-preview.png +0 -0
  42. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/docs/automation.md +0 -0
  43. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/docs/bench.md +0 -0
  44. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/docs/changelog.md +0 -0
  45. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/docs/commands.md +0 -0
  46. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/docs/configuration.md +0 -0
  47. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/docs/contributing.md +0 -0
  48. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/docs/git.md +0 -0
  49. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/docs/hooks.md +0 -0
  50. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/docs/how-it-works.md +0 -0
  51. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/docs/index.md +0 -0
  52. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/docs/installation.md +0 -0
  53. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/docs/lsp.md +0 -0
  54. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/docs/mcp.md +0 -0
  55. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/docs/memory.md +0 -0
  56. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/docs/models.md +0 -0
  57. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/docs/sandbox.md +0 -0
  58. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/docs/search.md +0 -0
  59. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/docs/servers.md +0 -0
  60. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/docs/troubleshooting.md +0 -0
  61. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/examples/README.md +0 -0
  62. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/examples/api/fix_tests.py +0 -0
  63. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/examples/commands/review.md +0 -0
  64. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/examples/skills/commit-message/SKILL.md +0 -0
  65. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/examples/skills/commit-message/scripts/staged.sh +0 -0
  66. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/install.sh +0 -0
  67. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/overrides/main.html +0 -0
  68. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/scripts/record_demo.py +0 -0
  69. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/scripts/social-preview.html +0 -0
  70. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/__main__.py +0 -0
  71. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/action.py +0 -0
  72. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/api.py +0 -0
  73. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/backends.py +0 -0
  74. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/bench.py +0 -0
  75. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/bench_backend.py +0 -0
  76. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/catalog.py +0 -0
  77. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/checkpoints.py +0 -0
  78. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/codesearch.py +0 -0
  79. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/config.py +0 -0
  80. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/context.py +0 -0
  81. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/extensions.py +0 -0
  82. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/frontmatter.py +0 -0
  83. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/gitflow.py +0 -0
  84. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/hardware.py +0 -0
  85. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/hooks.py +0 -0
  86. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/limits.py +0 -0
  87. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/lsp.py +0 -0
  88. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/mcp/__init__.py +0 -0
  89. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/mcp/auth.py +0 -0
  90. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/mcp/catalog.py +0 -0
  91. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/mcp/catalog.toml +0 -0
  92. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/mcp/client.py +0 -0
  93. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/mcp/commands.py +0 -0
  94. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/mcp/config.py +0 -0
  95. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/mcp/http.py +0 -0
  96. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/mcp/manager.py +0 -0
  97. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/mcp/protocol.py +0 -0
  98. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/mcp/server.py +0 -0
  99. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/mcp/stdio.py +0 -0
  100. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/memory.py +0 -0
  101. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/models.toml +0 -0
  102. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/ollama.py +0 -0
  103. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/render.py +0 -0
  104. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/repl.py +0 -0
  105. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/repomap.py +0 -0
  106. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/sandbox.py +0 -0
  107. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/servers/__init__.py +0 -0
  108. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/servers/encord.py +0 -0
  109. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/servers/valohai.py +0 -0
  110. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/sessions.py +0 -0
  111. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/subagents.py +0 -0
  112. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/vision.py +0 -0
  113. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/src/lcode/web.py +0 -0
  114. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/tests/conftest.py +0 -0
  115. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/tests/fake_lsp_server.py +0 -0
  116. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/tests/fake_mcp_server.py +0 -0
  117. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/tests/test_action.py +0 -0
  118. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/tests/test_agent.py +0 -0
  119. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/tests/test_backends.py +0 -0
  120. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/tests/test_bench.py +0 -0
  121. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/tests/test_catalog.py +0 -0
  122. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/tests/test_checkpoints.py +0 -0
  123. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/tests/test_cli.py +0 -0
  124. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/tests/test_codesearch.py +0 -0
  125. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/tests/test_config.py +0 -0
  126. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/tests/test_context.py +0 -0
  127. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/tests/test_context_picker.py +0 -0
  128. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/tests/test_extensions.py +0 -0
  129. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/tests/test_gitflow.py +0 -0
  130. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/tests/test_hooks.py +0 -0
  131. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/tests/test_lsp.py +0 -0
  132. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/tests/test_mcp.py +0 -0
  133. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/tests/test_memory.py +0 -0
  134. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/tests/test_permissions.py +0 -0
  135. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/tests/test_plan_mode.py +0 -0
  136. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/tests/test_repomap.py +0 -0
  137. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/tests/test_sandbox.py +0 -0
  138. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/tests/test_servers.py +0 -0
  139. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/tests/test_sessions.py +0 -0
  140. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/tests/test_subagents.py +0 -0
  141. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/tests/test_tools.py +0 -0
  142. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/tests/test_vision.py +0 -0
  143. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/tests/test_web.py +0 -0
  144. {lcode_cli-0.18.0 → lcode_cli-0.19.0}/uv.lock +0 -0
@@ -6,6 +6,22 @@ All notable changes to lcode are documented here. The format follows
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.19.0] - 2026-10-06
10
+
11
+ ### Added
12
+
13
+ - `lcode acp`: lcode inside editors that speak the Agent Client Protocol (Zed, JetBrains IDEs,
14
+ Neovim, Emacs and others). The editor shows the answers and thinking as they stream, each tool
15
+ call with the files it touches and a diff for edits, and asks permission questions and plan
16
+ approvals in its own dialog. lcode's permission modes are the session's modes, the todo list is
17
+ the editor's plan, and saved sessions reopen with their conversation. The model reads the
18
+ editor's buffers (unsaved changes included) and edits through them, and MCP servers the editor
19
+ passes join lcode's own. See [Editors](https://nasser1941.github.io/lcode/editors/) for setup.
20
+
21
+ ### Fixed
22
+
23
+ - Cancelling a request whose answer was cut off mid-stream no longer ends it as if it were done.
24
+
9
25
  ## [0.18.0] - 2026-10-06
10
26
 
11
27
  ### Added
@@ -434,7 +450,8 @@ First public release.
434
450
  - `AGENTS.md` project instructions and `/init` to generate them.
435
451
  - One-line installer for Linux and macOS.
436
452
 
437
- [Unreleased]: https://github.com/nasser1941/lcode/compare/v0.18.0...HEAD
453
+ [Unreleased]: https://github.com/nasser1941/lcode/compare/v0.19.0...HEAD
454
+ [0.19.0]: https://github.com/nasser1941/lcode/compare/v0.18.0...v0.19.0
438
455
  [0.18.0]: https://github.com/nasser1941/lcode/compare/v0.17.0...v0.18.0
439
456
  [0.17.0]: https://github.com/nasser1941/lcode/compare/v0.16.0...v0.17.0
440
457
  [0.16.0]: https://github.com/nasser1941/lcode/compare/v0.15.0...v0.16.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: lcode-cli
3
- Version: 0.18.0
3
+ Version: 0.19.0
4
4
  Summary: A local-first terminal coding agent powered by open-weight models on your own GPU or Mac, via Ollama.
5
5
  Project-URL: Homepage, https://nasser1941.github.io/lcode/
6
6
  Project-URL: Documentation, https://nasser1941.github.io/lcode/
@@ -104,6 +104,8 @@ through [Ollama](https://ollama.com), and when it needs current information it c
104
104
  - **Git workflow.** `/commit` writes messages in your repository's style, `/review` checks the
105
105
  changes with `file:line` findings, `/pr` opens the pull request, each after you approve it, and
106
106
  `lcode --worktree` runs parallel sessions on one repository.
107
+ - **In your editor.** Zed, JetBrains IDEs, Neovim and other editors that speak the Agent Client
108
+ Protocol run lcode with `lcode acp`, with diffs and approvals in the editor.
107
109
  - **Automation.** `lcode -p --output json` for scripts and CI, a Python API (`from lcode import
108
110
  Session`), and a GitHub Action that answers `@lcode` in issues and pull requests on your own
109
111
  self-hosted runner.
@@ -214,7 +216,6 @@ fills up. Details: [How it works](https://nasser1941.github.io/lcode/how-it-work
214
216
 
215
217
  See the pinned [Roadmap issue](https://github.com/nasser1941/lcode/issues/10). Next up:
216
218
 
217
- - [Editor integration through the Agent Client Protocol](https://github.com/nasser1941/lcode/issues/49)
218
219
  - [Long-running work: finish notifications and background commands](https://github.com/nasser1941/lcode/issues/51)
219
220
  - More models in the catalog, and test reports from your hardware ([report one](https://github.com/nasser1941/lcode/issues/new?template=model_request.yml))
220
221
 
@@ -68,6 +68,8 @@ through [Ollama](https://ollama.com), and when it needs current information it c
68
68
  - **Git workflow.** `/commit` writes messages in your repository's style, `/review` checks the
69
69
  changes with `file:line` findings, `/pr` opens the pull request, each after you approve it, and
70
70
  `lcode --worktree` runs parallel sessions on one repository.
71
+ - **In your editor.** Zed, JetBrains IDEs, Neovim and other editors that speak the Agent Client
72
+ Protocol run lcode with `lcode acp`, with diffs and approvals in the editor.
71
73
  - **Automation.** `lcode -p --output json` for scripts and CI, a Python API (`from lcode import
72
74
  Session`), and a GitHub Action that answers `@lcode` in issues and pull requests on your own
73
75
  self-hosted runner.
@@ -178,7 +180,6 @@ fills up. Details: [How it works](https://nasser1941.github.io/lcode/how-it-work
178
180
 
179
181
  See the pinned [Roadmap issue](https://github.com/nasser1941/lcode/issues/10). Next up:
180
182
 
181
- - [Editor integration through the Agent Client Protocol](https://github.com/nasser1941/lcode/issues/49)
182
183
  - [Long-running work: finish notifications and background commands](https://github.com/nasser1941/lcode/issues/51)
183
184
  - More models in the catalog, and test reports from your hardware ([report one](https://github.com/nasser1941/lcode/issues/new?template=model_request.yml))
184
185
 
@@ -0,0 +1,85 @@
1
+ # Editors
2
+
3
+ lcode also works inside editors that support the
4
+ [Agent Client Protocol](https://agentclientprotocol.com) (ACP), such as Zed, JetBrains IDEs,
5
+ Neovim and Emacs. The editor starts `lcode acp` and shows lcode's work in its own UI: answers,
6
+ tool calls, a diff for each edit, and permission questions.
7
+
8
+ ## Zed
9
+
10
+ Add lcode to Zed's `settings.json`:
11
+
12
+ ```json
13
+ {
14
+ "agent_servers": {
15
+ "lcode": {
16
+ "type": "custom",
17
+ "command": "lcode",
18
+ "args": ["acp"],
19
+ "env": {}
20
+ }
21
+ }
22
+ }
23
+ ```
24
+
25
+ Then open the Agent Panel and start a new thread with **lcode** from the new-thread menu.
26
+
27
+ - **Zed can't start lcode:** use the full path in `command`, from `which lcode` (usually
28
+ `~/.local/bin/lcode`). An editor started from the desktop may not see your shell's `PATH`.
29
+ - **Something goes wrong:** run **dev: open acp logs** in Zed's command palette to see the
30
+ messages lcode and Zed exchange.
31
+
32
+ ## JetBrains IDEs
33
+
34
+ Add lcode to `~/.jetbrains/acp.json`, with the full path from `which lcode`:
35
+
36
+ ```json
37
+ {
38
+ "agent_servers": {
39
+ "lcode": {
40
+ "command": "/home/you/.local/bin/lcode",
41
+ "args": ["acp"]
42
+ }
43
+ }
44
+ }
45
+ ```
46
+
47
+ Then pick lcode in the AI Chat tool window.
48
+
49
+ ## Other editors
50
+
51
+ Any [ACP client](https://agentclientprotocol.com/overview/clients) works the same way: tell it
52
+ to run `lcode acp`. That includes Neovim (CodeCompanion, avante.nvim), Emacs (agent-shell),
53
+ VS Code extensions and more.
54
+
55
+ ## What the editor shows
56
+
57
+ | In the editor | From lcode |
58
+ |---|---|
59
+ | The conversation | lcode's answers and its thinking, as they stream |
60
+ | Tool calls | Each tool call, with its kind (read, search, edit, run, fetch) and the files it touches |
61
+ | Edits | A diff of the whole file for each edit |
62
+ | Open files | Edits go through the editor, so open files update right away. The model reads what's in the editor, unsaved changes included |
63
+ | Permission questions | **Allow**, **Always allow** (for this session) or **Reject**, in the editor's own dialog |
64
+ | Modes | lcode's [permission modes](usage.md#permissions): Ask, Auto-edit, Plan and Yolo |
65
+ | Plans | In Plan mode, the plan is approved in the editor, which then switches to Ask or Auto-edit |
66
+ | The plan list | The model's todo list |
67
+ | Context | How much of the context window is in use |
68
+ | Commands | `/review` and [your own commands](commands.md) |
69
+ | Past threads | lcode's saved sessions: an editor that reopens a thread gets its conversation back |
70
+
71
+ [Checkpoints](usage.md#undo-and-checkpoints), [hooks and permission rules](hooks.md),
72
+ [memory](memory.md), [subagents](agents.md) and [MCP servers](mcp.md) work as in the terminal.
73
+ MCP servers the editor passes to its agents are added to lcode's own.
74
+
75
+ ## Settings
76
+
77
+ lcode uses your [configuration](configuration.md): the model, the context window, the
78
+ [model server](servers.md) and the default permission mode. To use different settings in an
79
+ editor, set them in the agent's `env`, for example `"env": {"LCODE_MODEL": "qwen3.5-9b"}`.
80
+
81
+ A repository's own commands, skills, agents and hooks are used only after you
82
+ [approve them](commands.md#approving-a-repositorys-commands-skills-and-agents). An editor can't
83
+ ask, so run `lcode` in the repository once and approve them there.
84
+
85
+ To see lcode's own output while it runs in an editor, set `LCODE_ACP_LOG` to a file in `env`.
@@ -12,7 +12,7 @@ lcode
12
12
 
13
13
  ```text
14
14
  ╭──────────────────────────────────────────────╮
15
- │ lcode v0.18.0 — local coding agent │
15
+ │ lcode v0.19.0 — local coding agent │
16
16
  │ │
17
17
  │ model lcode-qwen3.6-35b │
18
18
  │ context 256K tokens │
@@ -10,6 +10,7 @@ lcode doctor # check the installation (include this in bug repor
10
10
  lcode config [set|unset] # show or change settings
11
11
  lcode bench [models] # score models on small coding tasks on this machine
12
12
  lcode mcp [catalog|add|list] # connect MCP servers: Jira, GitHub, AWS, databases… (see MCP servers)
13
+ lcode acp # run inside an editor over the Agent Client Protocol (see Editors)
13
14
  ```
14
15
 
15
16
  | Option | Meaning |
@@ -97,6 +97,7 @@ nav:
97
97
  - Commands and skills: commands.md
98
98
  - Git workflow: git.md
99
99
  - Automation: automation.md
100
+ - Editors: editors.md
100
101
  - Code intelligence: lsp.md
101
102
  - Repository map and code search: search.md
102
103
  - Models & context windows: models.md
@@ -86,6 +86,7 @@ ignore = [
86
86
  "src/lcode/backends.py" = ["E501"]
87
87
  "src/lcode/gitflow.py" = ["E501"]
88
88
  "src/lcode/action.py" = ["E501"]
89
+ "src/lcode/acp.py" = ["E501"]
89
90
 
90
91
  [tool.pytest.ini_options]
91
92
  testpaths = ["tests"]
@@ -3,7 +3,7 @@
3
3
  From a program: `from lcode import Session` (see lcode.api).
4
4
  """
5
5
 
6
- __version__ = "0.18.0"
6
+ __version__ = "0.19.0"
7
7
 
8
8
  API = ("Session", "Result", "Options", "SetupError")
9
9